第IV部 JSONデータの問合せ

JSONデータの問合せには、単純なドット表記法を使用できます。また、より多くの機能が必要な場合には、SQL/JSONファンクションおよび条件を使用できます。一連のJSON文書の構造および型の情報をまとめたデータ・ガイドを作成して問い合せることができます。

JSONデータをデータベース格納する際には、標準のデータ型(VARCHAR2BLOBおよび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言語リファレンスを参照してください

この部の内容は次のとおりです。