Добавить значение в параметр массива декодирования JSON, хранящийся в MySQL
Я пытаюсь понять, как добавить ноль к определенному значению JSON-декодированного массива для нескольких записей, хранящихся в таблице MySQL, в соответствии с некоторыми условиями.
например, для таблицы 'menu' столбец 'params'(текст) содержит записи, содержащие декодированные в JSON массивы этого формата:
{"categories":["190"],"singleCatOrdering":"","menu-anchor_title":""}
и столбец "id" имеет числовое значение 90.
Моя цель - добавить ноль к значению "категории" в menu.params, если (например) menu.id меньше 100.
для этой записи результат
{"categories":["1900"],"singleCatOrdering":"","menu-anchor_title":""}
поэтому я ищу SQL-запрос, который будет искать и находить вхождения "категорий": ["999"] в базе данных и обновлять запись, добавляя ноль в конец значения.
Этот ответ частично полезен, предлагая использовать mysql-udf-regexp, но он ссылается на ЗАМЕНИТЬ значение, а не ОБНОВЛЯТЬ его. возможно, REGEXP_REPLACE? функция сделает свое дело. я никогда не пользовался этой библиотекой и не знаком с ней, возможно, есть более простой способ добиться того, что мне нужно?
Спасибо
1 ответ
Если я правильно понимаю ваш вопрос, вы хотите код, который делает что-то вроде этого:
var data = {
"menu": {
"id": 90,
"params": {
"categories": ["190"],
"singleCatOrdering": "",
"menu-anchor_title": ""
}
}
};
var keys = Object.keys(data);
var columns;
for (var ii = 0, key; key = keys[ii]; ii++) {
value = data[key];
if (value.id < 100) {
value.params.categories[0] += "0";
alert(value.params.categories[0]);
}
}
Тем не менее, я не использую регулярное выражение вообще. Возможно, если вы перефразируете вопрос, необходимость регулярного выражения станет более понятной.