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

标签 mysql regex mysql-udf

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

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

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

“id”列的数值为 90。

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

此记录的结果是

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

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

这个answer通过提供使用 mysql-udf-regexp 有部分帮助但它指的是替换一个值而不是更新它。 也许是 REGEXP_REPLACE?函数就能解决问题。我从未使用过这个库,也不熟悉它,也许有一种更简单的方法来实现我需要的?

谢谢

最佳答案

如果我正确理解你的问题,你需要执行如下操作的代码:

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

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

关于mysql - 将值附加到存储在 MySQL 中的 JSON 解码数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30594158/

相关文章:

mysql - hive 中的分区

python - 从段落中的字符范围获取句子的单词范围

mysql - 错误 1126 (HY000) : Can't open shared library 'lib_mysqludf_sys.so' (errno: 193 )

mysql - 通过执行 native 操作系统的命令(如 curl)通过 MySQL 调用 HTTP GET 请求

内部连接中的mysql随机选择

Mysql LEFT JOIN 和 SUM 并显示 0 而不是 NULL

regex - Bash:如何从字符串中获取数字? (可能是正则表达式)

python - 匹配任何 unicode 字母?

mysql - GCC 没有链接 RHash?

php - ajax为mysql查询发布多个值