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

推薦する

HTML要素にフォーカスを設定する方法

コードをコピーコードは次のとおりです。 <本文<フォームアクション="&quo...

Dockerコンテナにvimコマンドがない問題を解決する方法

問題を見つける今日、Docker コンテナ内のファイルを変更しようとしたところ、コンテナ内に vim...

略語マークと頭字語マーク

<abbr>タグと<acronym>タグは、Web ページに表示される略語と...

MySQL の innodb_flush_log_at_trx_commit と sync_binlog を区別する方法

2 つのパラメータ innodb_flush_log_at_trx_commit と sync_bi...

Vue で配列をクリアするいくつかの方法 (要約)

目次1. はじめに2. データを消去するいくつかの方法2.1 ref() の使用2.2 スライスの使...

タイプファイルの入力ボタン機能の研究

<br />一部のWebサイトでアップロードする場合、「参照」ボタンをクリックすると[フ...

Taobao ストアでズームインする効果は、スライドショーを使用する原理に似ています。

今日は、スライドを使用する原理に似た、Taobao のフロントエンドのマウス ズーム効果に慣れました...

デザイン理論: デザインにおける階層

<br />原文: http://andymao.com/andy/post/80.ht...

VUE ユニアプリコア知識の簡単な紹介

目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...

Reactのref属性を深く理解する方法

目次概要1. Refsオブジェクトの作成1.1 React.createRef() 1.2React...

MySQLパラダイムの使用に関する詳細な説明

1. パラダイムこのパラダイムの英語名は Normal Form であり、1970 年代にリレーショ...

HTMLでのラジオ値の取得、割り当て、登録の詳細な説明

1. ラジオのグループ化名前が同じであれば、それらはグループであり、つまり、次のようにグループ内で選...

Vue の下部ナビゲーション バー TabBar を実装するための非常に詳細なチュートリアル

目次プロジェクト紹介:プロジェクトディレクトリ: TabBar 効果のプレビュー: TabBar 実...

Linux 環境で crontab コマンドを使用して、スケジュールされた定期的な実行タスクを設定します (PHP 実行コードを含む)

この記事では、Linux 環境で crontab コマンドを使用して、タスクの定期的な実行をスケジュ...