在文档中包含json_string作为mysql 5.7中的值时,插入json列时出现错误

时间:2019-04-17 05:59:48

标签: mysql json insert

当json文档包含一个json字符串作为值时,插入json列时总是会出错

  

msyql 5.7.25-0ubuntu0.18.04.2

sql错误:

INSERT INTO test VALUES(null, '{"a":"avalues","b":"{\"a\":\"avalues\"}"}');

但是下面的sql运行良好

INSERT INTO test VALUES(null, '{"a":"avalues","b":"{\'a\':\'avalues\'}"}');

2 个答案:

答案 0 :(得分:0)

您必须小心转义单引号。但是您不需要在第一个查询中使用\“

答案 1 :(得分:0)

要在字符串中插入文字反斜杠,您需要使用\\

我在5.7上可以使用它:

INSERT INTO test VALUES(null, '{"a":"avalues","b":"{\\"a\\":\\"avalues\\"}"}');

我查询了数据并得到了输出:

select json_pretty(data) from test;
+----------------------------------------------------+
| json_pretty(data)                                  |
+----------------------------------------------------+
| {
  "a": "avalues",
  "b": "{\"a\":\"avalues\"}"
} |
+----------------------------------------------------+
1 row in set (0.01 sec)

我不知道您为什么要在JSON文档中存储JSON字符串。太容易出错了,不是一个好主意。