#c# #mysql #sql
Вопрос:
У меня проблема.Когда мы вставляем массив int в Mysql с типом JSON,мы можем написать sql, подобный INSERT INTO table (json_column) VALUES ('[1,2,3]')
.Но когда я хочу вставить массив строк, который я использовал INSERT INTO table (json_column) VALUES ("['item1','item2','item3']")
, мне было предложено с ошибкой: 3140 - Invalid JSON text: "Invalid value." at position 1 in value for column 'test.names'.
что мне делать?
Комментарии:
1. Работает ли это
VALUES ('["item1", "item2", "item3"]')
?2. Преобразуйте в json и вставьте в один столбец или вставьте в несколько столбцов
Ответ №1:
Документы JSON имеют определенные правила в отношении формата. Строковые значения внутри документа JSON должны быть разделены двойными кавычками, а не одинарными кавычками.
неправильный:
"['item1','item2','item3']"
право:
'["item1","item2","item3"]'
Это хорошо работает внутри строк SQL, потому что строки SQL должны быть разделены одинарными кавычками. MySQL нестандартен в поддержке двойных кавычек в качестве альтернативного разделителя строк.
Чтобы обеспечить создание документа JSON с правильным форматом, вы можете использовать функции JSON_ARRAY() или JSON_OBJECT (). Вы приводите аргументы в виде отдельных значений, и функция вернет значение документа, гарантированно отформатированное как допустимый JSON.
INSERT INTO table (json_column)
VALUES (JSON_ARRAY('item1', 'item2', 'item3'));
Комментарии:
1. Большое спасибо. Утверждение » [«пункт 1″,»пункт 2″] » доступно
Ответ №2:
Сделайте это более простым, например
INSERT INTO table (json_column) VALUES ('["item1","item2","item3"]')
Или используйте пары «ключ-значение», такие как
INSERT INTO table VALUES ('{"name": "item1", "id": "item2", "mob": "item3"}');
Комментарии:
1. Большое спасибо, приведенный выше ответ друга помог решить проблему