当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\'}"}');
最佳答案
要在字符串中插入文字反斜杠,您需要使用\\
。
我在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字符串。这太容易出错了,不是一个好主意。