Добавить значение в параметр массива декодирования 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]);
    }
}

jsFiddle

Тем не менее, я не использую регулярное выражение вообще. Возможно, если вы перефразируете вопрос, необходимость регулярного выражения станет более понятной.

Другие вопросы по тегам