Как вставить массив строк в столбец json mysql

#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. Большое спасибо, приведенный выше ответ друга помог решить проблему