MysqlクエリJSON結果に関連する関数の概要

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列としてデータベースに保存されます。初めて触れたときは、フィールドをクエリする $.xx メソッドしか知りませんでした。ほとんどの場合、これで十分であり、残りはプログラムに任せられるからです。しかし、最近の操作の中には、より複雑なクエリ操作が必要なものもあったので、すぐにもっと多くの方法を学びました。

JSON_EXTRACT(json_doc [,パス])

クエリフィールド

mysql> @j = '{"name":"wxnacy"}' を設定します。
mysql> JSON_EXTRACT(@j, '$.name') を選択します。
+----------------------------+
| JSON_EXTRACT(@j, '$.name') |
+----------------------------+
| 「wxnacy」|
+----------------------------+

より簡潔な方法もありますが、テーブルをクエリするときにのみ使用できます。

mysql> テストから ext -> '$.name' を選択します。
+-----------------+
| 拡張子 -> '$.name' |
+-----------------+
| 「wxnacy」|
+-----------------+

$. の後には、JSON 形式を使用して配列などのデータを取得できます。

mysql> @j = '{"a": [1, 2]}' を設定します。
mysql> JSON_EXTRACT(@j, '$.a[0]')を選択します。
+----------------------------+
| JSON_EXTRACT(@j, '$.a[0]') |
+----------------------------+
| 1 |
+----------------------------+

JSON_DEPTH(json_doc)

JSONの深さを計算します。計算方法は{} []です。記号がある場合はレイヤーです。記号の下にデータがある場合は、さらにレイヤーが追加されます。複雑なJSONは最も深いものまで計算されます。公式ドキュメントではnull値の深さは0と書かれていますが、実際の効果はそうではありません。いくつか例を挙げます

JSON_LENGTH(json_doc [, パス])

最も外側の JSON または指定されたパスの長さを計算します。スカラーの長さは 1 です。配列の長さは配列要素の数であり、オブジェクトの長さはオブジェクト メンバーの数です。

mysql> JSON_LENGTH('[1, 2, {"a": 3}]')を選択します。
+---------------------------------+
| JSON_LENGTH('[1, 2, {"a": 3}]') |
+---------------------------------+
| 3 |
+---------------------------------+
mysql> JSON_LENGTH('{"a": 1, "b": {"c": 30}}')を選択します。
+-----------------------------------------+
| JSON_LENGTH('{"a": 1, "b": {"c": 30}}') |
+-----------------------------------------+
| 2 |
+-----------------------------------------+
mysql> JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') を選択します。
+------------------------------------------------+
| JSON_LENGTH('{"a": 1, "b": {"c": 30}}', '$.b') |
+------------------------------------------------+
| 1 |
+------------------------------------------------+

JSON_TYPE(json_doc)

JSON 値の型を示す utf8mb4 文字列を返します。 これは、次に示すように、オブジェクト、配列、またはスカラー型になります。

mysql> SET @j = '{"a": [10, true]}';
mysql> JSON_TYPE(@j) を選択します。
+---------------+
| JSON_TYPE(@j) |
+---------------+
| オブジェクト |
+---------------+
mysql> JSON_TYPE(JSON_EXTRACT(@j, '$.a'))を選択します。
+------------------------------------+
| JSON_TYPE(JSON_EXTRACT(@j, '$.a')) |
+------------------------------------+
| 配列 |
+------------------------------------+
mysql> JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]'))を選択します。
+---------------------------------------+
| JSON_TYPE(JSON_EXTRACT(@j, '$.a[0]')) |
+---------------------------------------+
| 整数 |
+---------------------------------------+
mysql> JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]'))を選択します。
+---------------------------------------+
| JSON_TYPE(JSON_EXTRACT(@j, '$.a[1]')) |
+---------------------------------------+
| ブール値 |
+---------------------------------------+

戻り値の型

純粋なJSON型:

  • オブジェクト: JSONオブジェクト
  • 配列: JSON配列
  • ブール値: JSON の真偽テキスト
  • NULL: JSON nullリテラル

番号タイプ:

  • INTEGER: MySQL TINYINT、SMALLINT、MEDIUMINT、および INT と BIGINT スカラー
  • DOUBLE: MySQL DOUBLE FLOAT スカラー
  • DECIMAL: MySQL DECIMAL および NUMERIC スカラー

時間タイプ:

  • DATETIME: MySQL DATETIME および TIMESTAMP スカラー
  • 日付: MySQL DATE スカラー
  • TIME: MySQL TIME スカラー

文字列型:

STRING: MySQL utf8 文字型スカラー: CHAR、VARCHAR、TEXT、ENUM、SET

バイナリタイプ:

BLOB: MySQL バイナリ型スカラー (BINARY、VARBINARY、BLOB、BIT など)

その他すべてのタイプ:

OPAQUE (生ビット)

JSON_有効

値が有効な JSON であるかどうかを示す 0 または 1 を返します。 引数が NULL の場合、 NULL を返します。

mysql> JSON_VALID('{"a": 1}')を選択します。
+------------------------+
| JSON_VALID('{"a": 1}') |
+------------------------+
| 1 |
+------------------------+
mysql> JSON_VALID('hello') を選択し、JSON_VALID('"hello"') を選択します。
+---------------------+-----------------------+
| JSON_VALID('hello') | JSON_VALID('"hello"') |
+---------------------+-----------------------+
| 0 | 1 |
+---------------------+-----------------------+

上記はMysqlクエリJSON結果の関連関数の概要の詳細内容です。MySQL json関数の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySql ファジークエリ JSON キーワード取得ソリューションの例
  • Mysql クエリの結果セットを JSON データに変換するサンプル コード
  • MySQL で JSON 形式のフィールドをクエリする詳細な説明
  • MySQL json 形式のデータクエリ操作
  • MySQL フルテキスト インデックス、ジョイント インデックス、Like クエリ、JSON クエリのうち、どれが高速ですか?
  • MySQL クエリ フィールド タイプが json の場合の 2 つのクエリ メソッド
  • Python クエリ mysql、json インスタンスを返す
  • mysql5.6 以前のデータベースで json をクエリする方法
  • Mysqlは保存されたJSON文字列内のデータを直接クエリします

<<:  Vue を使用して 2 つのデータ セットの違いを比較する視覚化コンポーネントの詳細な説明

>>:  IdeaでTomcatを起動したときに複数のリスナーが報告される問題を解決する

推薦する

HTML チュートリアル: title 属性と alt 属性

XHTML は CSS レイアウトの基礎です。jb51.net は常に XHTML 知識の習得を重視...

Zabbix ベースの Jenkins プロセス監視の詳細な説明

1. 監視アーキテクチャ図 2. 実装のアイデアJenkins に Metrics プラグインをイン...

Centos7でglibcをアップグレードするとシステム異常(起動できない)になる場合の解決方法

目次問題の原因:解決:解決:私は Centos7 を使用しています (理論的にはこの方法は Cent...

Dockerスペースがいっぱいでコンテナに入れない場合の解決策

トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...

Vueのref属性の詳細な説明

要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS....

MySQLサービスを開くおよび閉じる2つの方法

方法1: cmdコマンドを使用するまず、DOS ウィンドウを開き、スタート、実行、cmd と入力しま...

現在のブラウザが JavaScript でヘッドレス ブラウザであるかどうかを検出する方法

目次ヘッドレスブラウザとは何ですか?なぜ「ヘッドレス」ブラウザと呼ばれるのでしょうか?ヘッドレスブラ...

JavaScriptは検証コードと検証のランダム生成を実装します

この記事では、検証コードのランダム生成と検証を実現するためのJavaScriptの具体的なコードを参...

Dockerイメージ内のnoneイメージ操作を削除する

普段はdocker buildコマンドでイメージを生成していますが、コードの更新が頻繁に行われるとn...

ドラッグアンドドロップでVueユーザーインターフェースを生成する方法

目次序文1. 技術原理1.1 レイアウト1.2 コンポーネント1.3 ステータス1.4 イベント1....

Vueは動的コンポーネントを使用してTAB切り替え効果を実現します

目次問題の説明Vueの動的コンポーネントとはアプリケーションシナリオの説明実装手順ステップ 1 (新...

Vue プロジェクトにおけるトランジション コンポーネントの適用の概要

​Vue のトランジションは、アニメーション トランジションをカプセル化するコンポーネントです。一般...

VMware および CentOS システムのインストール方法 - ルート パスワードをリセットする

今日のタスク1. Linuxディストリビューションの選択2.vmwareが仮想マシン(centos)...

Ubuntu システムログで /var/log/messages を設定する方法

1. 問題の説明今日、システム ログ ファイルを確認する必要がありますが、/var/log/mess...

JS配列インデックス検出におけるデータ型の問題の詳細な説明

WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は...