MySQLのjson形式のクエリフィールド

作業開発プロセスでは、顧客の名前、携帯電話番号、IDカード、および証明書の種類を動的に保存する必要があります。つまり、フロントエンドは1人または2人または3人の情報を送信できます。動的な人数と可変の人数の4つのフィールドがあります(名前、携帯電話番号、IDカード、証明書の種類)。

フロントエンドページは次のとおりです。
これはフロントエンドの写真です
私はリストを使用しています来接收前端传过来 json,mysql 用 varchar 来保存这个 json 数组

[{
    
    
	"cardId": "110101199003072316",
	"cstName": "张双儿1",
	"cstMobile": "13263654144",
	"idCardType": "1"
}, {
    
    
	"cardId": "11010119900307571X",
	"cstName": "张双儿2",
	"cstMobile": "13263654144",
	"idCardType": "1"
}]

製品の要件は、これらの共同顧客の情報を漠然と照会することです。最初は、間違った方法で
記述しました。「%儿%」のようにsignCustomerGroupから*を選択し
ましたが、後で、文字cを漠然と入力するなどの問題があることがわかりました。左側の「cardId」を配置します。英語のフィールド名と一致します。
後で、jsonタイプがMySQL 5.7以降のバージョンに追加されたことを知りました。jsonタイプの一部の関数を使用して、json形式のフィールドを直接クエリできます。

正しい構文は次のとおりです。
テーブルフィールド:

id sign_customer_info_ext
1 [{“ cstName”:“ hhjk”、“ cstMobile”:“ 14258669888”、“ idCardType”:“ 1”、“ cardId”:“ 460101199601012516”}]
2 [{“ cstName”:“ ghhj中文1355”、“ cstMobile”:“ 18253558608”、“ idCardType”:“ 1”、“ cardId”:“ 460101199601012815”}、{“ cstName”:“ fhjj分133366”、“ cstMobile ”:“ 15555555555”、“ idCardType”:“ 1”、“ cardId”:“ 460101199601012313”}]

ここに画像の説明を挿入

使用される主なSQL関数はjson_extract()であり、その関数は、JSON形式から指定されたすべてのデータを検索することです。

1.json配列クエリ

模糊查询 json 数组格式的字段中某个字段:
使用方式:
SELECT * FROM 表名 WHERE json_extract(字段名,"$[*].json中key") like '%需要搜索的值%';
实例:
SELECT * FROM table WHERE json_extract(sign_customer_info_ext,"$[*].cstName") like '%h%';
精准查询(注意:精准查询必须写明所查询字段所属数组那个下标,比如查排在一个就是 [0],第二个就是 [1])
SELECT id,sign_customer_info_ext FROM table WHERE json_extract(sign_customer_info_ext,"$[0].cstName") = 'ghhj中文1355';

2.単一のjsonクエリ
フロントエンドおよびmysqlデータベースの単一のjsonパラメーター:

{
	"cstName": "马云",
	"cstMobile": "17879767646",
	"idCardType": "1",
	"cardId": "E4813980"
}
模糊查询单个 json 查询:
使用方式:
SELECT id,sign_customer_info_ext FROM 表名 WHERE json_extract(字段名,"$.json中key") like '%马云%';
实例:
SELECT id,sign_customer_info_ext FROM table  WHERE json_extract(sign_customer_info_ext,"$.cstName") like '%马云%';

おすすめ

転載: blog.csdn.net/weixin_46756314/article/details/112286652