MySQL で JSON 形式のフィールドをクエリする詳細な説明

MySQL で JSON 形式のフィールドをクエリする詳細な説明

作業開発プロセス中に、顧客の名前、携帯電話番号、ID カード、およびドキュメントの種類を動的に保存する必要があるという要件が発生しました。これは、フロントエンドが 1 人、2 人、または 3 人の情報を送信する可能性があることを意味し、これは 4 つのフィールド (名前、携帯電話番号、ID カード、ドキュメントの種類) の動的かつ固定されていない数です。

フロントエンドページは次のとおりです。

これはフロントエンドの写真です

リストを使用していますフロントエンドからjsonを受信するために、mysqlはvarcharを使用してこのjson配列を保存します。

[{
	"カードID": "110101199003072316",
	"cstName": "張双児 1",
	"cstモバイル": "13263654144",
	"idカードタイプ": "1"
}, {
	"カードID": "11010119900307571X",
	"cstName": "張双児2",
	"cstモバイル": "13263654144",
	"idカードタイプ": "1"
}]

製品の要件は、これらの共同顧客情報をファジークエリすることです。 最初は、次のように間違って書きました。

signCustomerGroup から '%儿%' のような * を選択します

しかし、後になって問題が見つかりました。たとえば、文字 c をあいまいに入力すると、左側の英語のフィールド名「cardId」が一致してしまいます。
その後、MySQL 5.7 以降のバージョンでは json タイプが追加され、一部の json タイプ関数を使用して json 形式のフィールドを直接クエリできることを知りました。

正しい構文は次のとおりです。

テーブルフィールド:

id顧客情報の拡張子に署名する
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 '%検索する値%';
例:
テーブルから * を選択し、 json_extract(sign_customer_info_ext,"$[*].cstName") を '%h%' のように指定します。
正確なクエリ (注: 正確なクエリでは、クエリ対象のフィールドが属する配列の添え字を指定する必要があります。たとえば、最初の添え字が [0] の場合、2 番目の添え字は [1] になります)
テーブルからid、sign_customer_info_extを選択します。WHERE json_extract(sign_customer_info_ext,"$[0].cstName") = 'ghhj中文1355';

2. 単一のJSONクエリ

フロントエンドと MySQL データベースの単一の JSON パラメータ:

{
	"cstName": "馬雲",
	"cstモバイル": "17879767646",
	"idCardType": "1",
	"カードID": "E4813980"
}
ファジークエリ単一JSONクエリ:
行き方:
SELECT id,sign_customer_info_ext FROM table name WHERE json_extract(field name,"$.json中key") like '%马云%';
例:
SELECT id,sign_customer_info_ext FROM table WHERE json_extract(sign_customer_info_ext,"$.cstName") like '%Ma Yun%';

要約する

これで、MySQL で json 形式をクエリする方法に関するこの記事は終了です。MySQL クエリ json 形式フィールドの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JSON 型フィールドデータの抽出とクエリの MySQL 実装
  • MySQLはクエリ条件としてJSONフィールドの内容に基づいてデータを取得します(JSON配列を含む)
  • Mybatis mysql ファジークエリメソッド(複数のフィールドを CONCAT)とバグ
  • MySQLクエリフィールドで文字列分割関数を実装するためのサンプルコード
  • MySQLクエリ時にフィールドにデフォルト値を割り当てる方法
  • MySQL の日付と時刻フィールドのクエリ

<<:  Dockerを使用してコンテナリソースを制限する方法

>>:  カルーセル効果を実現するための純粋なjs

推薦する

MySQLにおけるテーブルインデックスの定義方法と導入

概要インデックスは、テーブル内の 1 つ以上の列に基づいて DBMS によって特定の順序で作成される...

nginx.pid を開く際の失敗と無効の解決策

目次1. 問題の説明2. 問題分析3. 解決策解決策1: ディレクトリを作成する解決策2: 構成ファ...

Windows7 での Mysql5.7 my.ini ファイルの読み込みパスとデータの場所の変更方法

更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...

vue3.2 で追加された defineCustomElement の基本原理の詳細な説明

目次Webコンポーネントカスタム要素概要HTMLTemplateElement コンテンツ テンプレ...

Tomcat の 404 エラーの解決方法の詳細な説明

Tomcat テストで 404 問題が発生します。問題は次のとおりです。 HTTP ステータス 40...

Bツリーの特性の紹介

B ツリーは一般的なデータ構造です。彼と一緒にB+ツリーがあります。ここで、概念を明確にする必要があ...

XHTML コードで Marquee タグを使用する方法

フォーラムで、ネットユーザーの jeanjean20 が、Marquee を標準に適合させる方法につ...

CentOs でノード バージョンを手動でアップグレードする方法

1. 対応するNode.jsパッケージを見つけます。https://nodejs.org/downl...

MySQL デッドロック ルーチン: 一意のインデックスの下でのバッチ挿入順序の不一致

序文デッドロックの本質はリソースの競合です。バッチ挿入の順序が一貫していないと、デッドロックに陥りや...

MySQL の一般的なログの概要

序文: MySQL システムには、さまざまな種類のログが存在します。さまざまなログにはそれぞれ独自の...

HTML CSS JS はタブページのサンプルコードを実装します

コードをコピーコードは次のとおりです。 <html xmlns="">...

2 級コンピュータ試験のための MySQL の知識ポイントとよく使用される MYSQL コマンド

2級コンピュータ試験のMySQL知識ポイントの基礎、一般的なMYSQLコマンドは次のとおりです。よく...

jQuery はテーブルのページング効果を実装します

この記事では、テーブルのページング効果を実現するためのjQueryの具体的なコードを参考までに紹介し...

TypeScript 学習ノート: 型の絞り込み

目次序文型推論真理値の絞り込み平等の縮小演算子の絞り込みインスタンスの絞り込み狭まりの本質ユニオン型...

MySQL MGR の利点は何ですか?

MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...