2 ответов:
Я искал ответ для себя и пришел к этому вопросу, не желая использовать объекты, которые я продолжал искать. Но я нашел решение, нужно использовать комбинацию
json_removeиjson_searchСледующее удаляет значение 1 из таблицы
tblи столбцаnumbersUPDATE tbl SET numbers = JSON_REMOVE( numbers, replace(json_search(numbers, 'one', 1), '"', '') ) WHERE json_search(numbers, 'one', 1) IS NOT NULL
json_searchвозвращает путь, в котором находится значение, т. е."$[0]"replaceУдалите"в противном случае произойдет ошибка сjson_removejson_removeудалит путь изjson_searchрезультатИ вуаля, ваша ценность удалена.
Примечание: это не предполагает наличия повторяющихся значений
Пока кто-то не найдет лучшее решение, я просто преобразовал его в объект:
{"1": 1, "2": 2, "3": 3}. Да, это уродливее и занимает больше места на диске, но вы получаете преимущество, не беспокоясь о дубликатах.Чтобы добавить число:
update tbl set numbers = json_insert(`numbers`, '$."4"', 4);Чтобы удалить число:
update tbl set numbers = json_remove(`numbers`, '$."4"');Чтобы получить строку с определенным номером:
select * from tbl where json_contains_path(`numbers`, 'one', '$."4"');
Comments