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":""}

そのため、データベースで "categories": ["999"] の出現箇所を検索して見つけ、値の末尾にゼロを追加してレコードを更新する SQL クエリを探しています。

この回答は、 mysql-udf-regexp の使用を提案することで部分的に役立ちますが、UPDATE ではなく値の REPLACE を参照しています。おそらく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]);
    }
}

jsフィドル

ただし、正規表現はまったく使用していません。おそらく、質問を言い換えると、正規表現の必要性がより明確になるでしょう。

于 2015-06-02T15:51:38.570 に答える