У меня есть столбец типа json в mysql с именем names и его простой массив json (не ключ / значение). Я не смог найти ни одного примера использования JSON_EXTRACT, JSON_SET, JSON_REPLACE, JSON_INSERT для простого поля массива json.
Я знаю, что есть другие способы манипулировать массивом json в типе поля json, но можно ли использовать эти функции для массива json?
например, поле name содержит ["A","B","C"], как я могу использовать эти функции для выполнения обновления, вставки и удаления этого json?
Обновить
запрос должен выполняться из скрипта php






Ваше значение не является допустимым массивом JSON для MySQL. Он должен быть в формате ["A", "B", "C"]. Как только это произойдет, все функции, на которые вы ссылаетесь, будут работать точно так, как ожидалось и описано в руководство по эксплуатации; то есть JSON_SET вставит или заменит, если значение уже существует, JSON_INSERT вставит, если значение еще не существует, а JSON_REPLACE заменит ранее существовавшее значение.
-- extract second element
select json_extract('["A", "B", "C"]', '$[1]')
"B"
-- replace second element
select json_set('["A", "B", "C"]', '$[1]', 'D')
["A", "D", "C"]
-- insert fourth element
select json_set('["A", "B", "C"]', '$[3]', 'E')
["A", "B", "C", "E"]
-- attempt to insert second element fails as it already exists
select json_insert('["A", "B", "C"]', '$[1]', 'F')
["A", "B", "C"]
-- insert fourth element
select json_insert('["A", "B", "C"]', '$[3]', 'F')
["A", "B", "C", "F"]
-- replace second element
select json_replace('["A", "B", "C"]', '$[1]', 'G')
["A", "G", "C"]
-- attempt to replace non-existing element fails
select json_replace('["A", "B", "C"]', '$[3]', 'G')
["A", "B", "C"]
я думаю нашел решение
для массива json невозможно использовать JSON_EXTRACT, JSON_SET, JSON_REPLACE, JSON_INSERT по значениям массива, и вы должны знать место каждого значения в массиве json (на мой взгляд, это слабость).
например, чтобы выбрать 2-е значение, вы можете использовать $[1],
но для вставки значений вы можете использовать
JSON_ARRAY_APPEND и JSON_ARRAY_INSERT
спасибо за ответ, я просто обновляю вопрос, я выполняю запросы не из консоли, а из скрипта php. и мне нужно указать имя таблицы и имя поля. Можете ли вы привести примеры запросов, которые можно выполнить по сценарию? а что такое
$[1]и$[3]?