プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
12cリリース1 (12.1)
B71278-13
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

JSONオブジェクト・アクセス式

JavaScript Object Notation (JSON)データの列を問い合せる場合のみ、JSONオブジェクト・アクセス式を使用できます。式は、そのデータ内の1つ以上のJSON値を含む文字列を戻します。このタイプの式の構文は、ドット表記法構文と呼ばれることがあります。

JSON_object_access_expr::=

json_object_access_expr.gifの説明が続きます。
図json_object_access_expr.gifの説明

JSONオブジェクト・アクセス式は、4KBを超える値を返せません。値がこの制限を超えると、式はnullを返します。実際の値を取得するには、かわりにJSON_QUERY関数またはJSON_VALUE関数を使用して、RETURNING句に適切な戻り型を指定します。

次の例では、「JSONドキュメントを含む表の作成: 例」で作成されるj_purchaseorder表を使用します。この表には、po_documentと呼ばれるJSONデータの列が含まれます。これらの例では、列po_documentからJSON値を戻します。

次の文は、キー名PONumberを使用したプロパティの値を戻します。

SELECT po.po_document.PONumber
  FROM j_purchaseorder po;

PONumber
--------
1600

次の文は、値がJSONオブジェクトであるキー名ShippingInstructionsを使用したプロパティを最初に対象とします。この文は、そのオブジェクト内のキー名Phoneを使用したプロパティを対象とします。この文は、JSON配列であるPhoneの値を戻します。

SELECT po.po_document.ShippingInstructions.Phone
  FROM j_purchaseorder po;
 
SHIPPINGINSTRUCTIONS
-------------------------------------------------------------------------------------
[{"type":"Office","number":"909-555-7307"},{"type":"Mobile","number":"415-555-1234"}]

次の文は、値がJSON配列であるキー名LineItemsを使用したプロパティを最初に対象とします。この式は配列を暗黙的にアンラップし、JSONオブジェクトである要素を評価します。次に、この文は、アンラップされたオブジェクト内のキー名Partを使用したプロパティを対象とし、2つのオブジェクトを確認します。この文は、それらのオブジェクト内のキー名Descriptionを使用したプロパティを対象とし、文字列値を確認します。複数の値が戻されるため、値はJSON配列の要素として戻されます。

SELECT po.po_document.LineItems.Part.Description
  FROM j_purchaseorder po;
 
LINEITEMS
-----------------------------------
[One Magic Christmas,Lethal Weapon]

関連項目:

ドット表記法構文を使用したJSONデータの問合せの詳細は、『Oracle XML DB開発者ガイド』を参照してください。