0

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

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

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

并且列“id”的数值为 90。

我的目标是每当(例如)menu.id 低于 100 时,在 menu.params 中的“类别”值中添加一个零。

为此记录结果是

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

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

通过提供使用mysql-udf-regexp但它指的是 REPLACE 一个值而不是 UPDATE 它,这个答案是部分有用的。也许是 REGEXP_REPLACE?功能将解决问题。我从来没有使用过这个库,也不熟悉它,也许有一种更简单的方法来实现我需要的东西?

谢谢

4

1 回答 1

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

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

于 2015-06-02T15:51:38.570 回答