作業開発プロセスでは、顧客の名前、携帯電話番号、IDカード、および証明書の種類を動的に保存する必要があります。つまり、フロントエンドは1人または2人または3人の情報を送信できます。動的な人数と可変の人数の4つのフィールドがあります(名前、携帯電話番号、IDカード、証明書の種類)。
フロントエンドページは次のとおりです。
私はリストを使用しています
[{
"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 '%马云%';