将值附加到存储在MySQL中的JSON解码数组参数

时间:2015-06-02 10:59:07

标签: mysql regex mysql-udf

我试图找出如何根据某些条件为存储在MySQL表中的多个记录的特定JSON解码数组值附加零值。

例如,对于表'menu',列'params'(文本)包含包含此格式的JSON解码数组的记录:

{"categories":["190"],"singleCatOrdering":"","menu-anchor_title":""}

和列'id'的数值为90。

我的目标是每当(例如)menu.id低于100时,在menu.params中为'categories'值添加零。

用于记录结果

{"categories":["1900"],"singleCatOrdering":"","menu-anchor_title":""}

所以我正在寻找一个SQL查询,它将在数据库中搜索并找到“类别”的出现次数:[“999”]并通过在值的末尾添加零来更新记录。

这个answer部分有用,提供使用mysql-udf-regexp,但它指的是REPLACE一个值,而不是更新它。 也许是REGEXP_REPLACE?功能会做到这一点。我从来没有使用过这个库,也不熟悉它,或许有一种更简单的方法来实现我的需求?

由于

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您希望代码执行以下操作:

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

但是,我根本没有使用正则表达式。也许如果你改写这个问题,正则表达式的必要性将变得更加清晰。