У меня есть таблица test, в которой есть поле json с форматом данных JSON.
В этом поле лежит массив [2, 3, 4, 5].
Я хочу удалить из массива троечку. И успешно делаю это следующим запросом:
UPDATE test SET json = JSON_REMOVE(json, '$[1]') WHERE `id` = 2;
Но что, если я знаю, что в массиве есть элемент со значением 3, но не знаю его индекса?
Пытаюсь выполнить следующий запрос:
UPDATE test SET json = JSON_REMOVE(
json,
'$[
JSON_SEARCH(json, 'one', 3)
]'
) WHERE `id` = 2;
Получаю ошибку синтаксиса.
Что я делаю не так?
Что я делаю не так?
Скобок и кавычек настолько много, что запрос потерял смысл; надо быть проще:
UPDATE test
SET json = JSON_REMOVE(json, JSON_UNQUOTE(JSON_SEARCH(json, 'one', 3)))
WHERE `id` = 2;
А если говорить более формально, то JSON_SEARCH ()
и так возвращает путь, так что не нужно никаких дополнительной обработки значения прежде чем передать его JSON_REMOVE ()
.
Замечания:
JSON_SEARCH ()
возвращает ответ как json-документ — строку в кавычках, поэтому можно использовать JSON_UNQUOTE
, чтобы из убрать.JSON_SEARCH ()
не может искать не-строковые значения — это очевидный баг, хотя некоторые считают, что его просто надо задокументировать; в MariaDB данной проблемы нет.Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Для изображенной схемы БД необходимо составить запрос, который вернет список всех счетовДля каждого счета выбрать поля номер счета, дата...
Пытаюсь сделать парсер сайта SoundCloud на pythonПри попытке получить код страницы, что через requests, что через Selenium html-код страницы выдается некорректным
Есть лого и 2 текстаНужно, чтобы они были в одном диве, но лого всегда улетает вниз