114

データ型を使用して mysql DB にレコードを挿入しましたjson encoded。データ内で検索する必要がありjson encodedますが、次の MySql クエリを使用して適切なデータを取得できません。

SELECT  `id` ,  `attribs_json` 
FROM  `products` 
WHERE  `attribs_json` REGEXP  '"1":{"value":[^"3"$]'

クエリ結果は「1」に等しいキーであり、値は「3」以外です

私のデータは次のとおりです。

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
4

10 に答える 10

199

MySQL バージョン >= 5.7をお持ちの場合は、これを試すことができます。

SELECT JSON_EXTRACT(name, "$.id") AS name
FROM table
WHERE JSON_EXTRACT(name, "$.id") > 3

出力:

+-------------------------------+
| name                          | 
+-------------------------------+
| {"id": "4", "name": "Betty"}  | 
+-------------------------------+


詳細については、MySQL リファレンス マニュアルを参照してください:
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

于 2016-08-26T10:17:48.640 に答える
32

MySQL の最新バージョンを使用している場合は、以下が要件を満たすのに役立つ場合があります。

select * from products where attribs_json->"$.feature.value[*]" in (1,3)
于 2016-09-01T12:10:53.650 に答える
11

このクエリを使用します

SELECT id FROM table_name WHERE field_name REGEXP '"key_name":"([^"])key_word([^"])"';
or
SELECT id FROM table_name WHERE field_name RLIKE '"key_name":"[[:<:]]key_word[[:>:]]"';

部分的な値を検索するために使用する最初のクエリ。2 番目のクエリは、正確な単語を検索するために使用します。

于 2015-08-04T21:59:11.303 に答える