第IV部 JSONデータの問合せ
JSONデータの問合せには、単純なドット表記法を使用できます。また、より多くの機能が必要な場合には、SQL/JSONファンクションおよび条件を使用できます。一連のJSON文書の構造および型の情報をまとめたデータ・ガイドを作成して問い合せることができます。
JSONデータをデータベース格納する際には、標準のデータ型(VARCHAR2
、BLOB
およびCLOB
)が使用されるため、JSONデータに対するSQL問合せは、他のデータベース・データと同じように実行されます。
特定のJSONフィールドに問合せを実行するために、または、特定のJSONフィールドをSQL列にマッピングするために、SQL/JSONパス言語を使用できます。最もシンプルな形式のパス式は、ピリオド(.
)で区切られた1つ以上のフィールド名から構成されます。より複雑なパス式には、フィルタと配列索引を含められます。
Oracleでは、JSONコンテンツの問合せに2つの方法を提供しています。
-
ドット表記法構文。これは、基本的には表の別名で、その後にJSON列名と1つ以上のフィールド名が、すべてピリオド(
.
)で区切られて表されます。各フィールド名の後に配列ステップが続く場合があります。この構文は、簡単に使用できるように、また、可能な場合にはJSON値を戻すように設計されています。 -
SQL/JSONファンクションおよび条件。パス言語を完全にサポートし、ドット表記法構文で可能な範囲よりも強力で柔軟性があります。Oracle Databaseに格納されているJSONデータを作成、問合せおよび操作するために、使用できます。
-
条件
json_exists
は、JSONデータ内に特定の値が存在するかどうかをテストします。 -
条件
is json
およびis not json
は、データが整形式のJSONデータであるかどうかをテストします。前者は、特にチェック制約として使用します。 -
ファンクション
json_value
は、JSONデータからSQL値としてスカラー値を選択します。 -
ファンクション
json_query
は、JSON値を表すSQL文字列として1つ以上の値をJSONデータから選択します。特に、JSON文書のフラグメント(通常はJSONオブジェクトまたは配列)を取得するために使用されます。 -
ファンクション
json_table
は、JSONデータを仮想表として投影します(これは、インライン・ビューとみなすこともできます)。
-
パス言語は問合せ言語の一部であるため、データに固定スキーマが課されることはありません。この設計は、スキーマレスな開発をサポートします。実際には、「スキーマ」は、特定のパスを指定することで問合せ時にその場で定義されます。これは、SQLでスキーマ(表の行と列のセット)がデータの格納時に定義されるという、より一般的なアプローチとは対照的です。
JSONデータ・ガイドを生成して問合せを行い、JSONコンテンツのナビゲーションに役立てることができます。データ・ガイドを利用することで、JSON文書の構造および型の情報を深く理解できます。データ・ガイドの情報は、追加した新しい文書をトラッキングするために、自動更新されるようにできます。
関連項目:
SQL/JSONファンクションの構文およびセマンティクスの詳細は、Oracle Database SQL言語リファレンスを参照してください
この部の内容は次のとおりです。
- JSONデータに対する単純なドット表記法アクセス
ドット表記法は、簡単で一般的な、共通するユースケース向けに設計されています。ドット表記法構文を使用したJSONデータの問合せでは、可能な場合は必ずJSON値が戻されます。 - SQL/JSONパス式
Oracle Databaseでは、SQL/JSONパス式を使用したJSONデータへのSQLアクセスが提供されます。 - SQL/JSON問合せファンクションおよび条件で使用される句
RETURNING
、ラッパー、エラーおよび空白フィールドの句について説明します。これらは、SQL/JSONファンクションおよび条件のjson_value
、json_query
、json_table
、is json
、is not json
およびjson_exists
の1つ以上で使用されます。 - SQL/JSON条件JSON_EXISTS
SQL/JSON条件json_exists
では、SQL/JSONパス式を行フィルタとして使用して、JSON文書の内容に基づいて行を選択できます。条件json_exists
は、SELECT
文のCASE
式またはWHERE
句で使用できます。 - SQL/JSONファンクションJSON_VALUE
SQL/JSONファンクションjson_value
は、JSONデータからスカラー値を選択し、これをSQL値として戻します。 - SQL/JSONファンクションJSON_QUERY
SQL/JSONファンクションjson_query
は、1つ以上の値をJSONデータから選択し、JSON値を表す文字列(VARCHAR2
)を戻します。(関数json_value
とは異なり、戻されるデータ型をNUMBER
にすることはできません。)したがって、json_query
を使用してJSON文書のフラグメントを取得できます。 - SQL/JSONファンクションJSON_TABLE
SQL/JSONファンクションjson_table
は、特定のJSONデータを各種SQLデータ・タイプの列に投影します。これを使用して、JSON式の評価結果を新規の仮想表の行および列に分解しますが、これは、インラインのビューであるとみなすこともできます。 - JSONデータ・ガイド
JSONデータ・ガイドを使用すると、Oracle Databaseに格納されたJSON文書の構造と内容に関する情報を検出できます。