sql-json-path-expression
SQL/JSON パス式は、JSON 文書のエレメントへのアクセスを定義します。
- lax または strict
- JSON パス・モードを指定します。
- lax
- 現在の JSON 文書のナビゲート時に、以下の構造エラーを含め、特定の構造エラーを許容することを指定します。
- 配列のネストを自動で解除。
- 配列として参照された場合に、自動ラップによってスカラー値を単一エレメント配列に変換する。
- 存在しない項目 (範囲外の配列添字値を含む) の指定。
項目が存在しない場合、SQL/JSON パス式は空ストリングを戻します。空ストリングは、関数の ON EMPTY 節で指定されたオプションに従って処理されます。
- strict
- 指定されたパス式を使用して現在の JSON 文書をナビゲートできない場合に、エラーを報告することを指定します。 エラーは、現在の ON ERROR 節に従って処理されます。
- sql-json-accessor-expression
-
- $
- SQL/JSON パス式の残りの部分が適用される、コンテキスト項目の開始点を指定します。
- json-path-key-name
- JSON 文書内のキー:値のペアのキー名を指定します。
- *
- すべてのキーの値が SQL/JSON シーケンスとして戻されることを指定します。
- array-specifier
- 配列に適用する添字値を指定します。配列の最初のエレメントの添字は 0 です。
指定した添字が範囲外の場合は、エラーと見なされます。
- number
- 配列エレメントを表す、符号なし整数定数。配列の最初のエレメントの添字は 0 です。
- *
- すべての配列エレメントが選択されることを示します。
以下に示す一部の文字には、SQL/JSON パス式の一部として使用する場合に、特別なセマンティクスが関連付けられています。
.- JSON 文書内の次のレベルに進むために使用します。
*- 現在のレベルにあるすべてのキーに一致させるために使用します。
[および]- 配列の添字を指定するために使用します。
これらの文字を json-path-key-name 内で使用できるようにするには、これらの文字の前に円記号 (¥) エスケープ文字を使用して、これらの文字がキー名の一部であることを示してください。
例
- この例では、以下の JSON ドキュメントに基づいています。
以下の表は、さまざまな SQL/JSON パス式を使用して JSON 文書内の項目にアクセスした結果を示しています。{ "isbn": "123-456-222", "author": [ { "name":"Jones"},{"name","Smith"}]}パス 一致する数 一致する項目 $.isbn 1 "123-456-222" $.author[0].name 1 "Jones" $.author[1].name 1 "Smith" - この例では、以下の JSON ドキュメントに基づいています。
以下の表は、さまざまな SQL/JSON パス式を使用して JSON 文書内の項目にアクセスした結果を示しています。{ "person" : {"firstname":"Fred", "lastname":"Gauss"}, "where" : "General Products", "friends" : [ { "name": "Lili","rank": 5 }, {"name": "Hank", "rank": 7} ], "work.area": "Finance" }パス 一致する数 一致する項目 $.person.lastname 1 "Gauss" $.friends 1 [ { "name": "Lili", "rank": 5 }, { "name": "Hank", "rank": 7} ] $.*.firstname 1 "Fred" $.person.* 2 "Fred" および "Gauss" $.friends[*] 2 { "name": "Lili", "rank": 5 } および { "name": "Hank", "rank": 7} $.friends[*].rank 2 5 および 7 $.work.area 0 $.work¥.area 1 "Finance" - この例では、以下の JSON ドキュメントに基づいています。
以下の表は、さまざまな SQL/JSON パス式を使用して JSON 文書内の項目にアクセスした結果を示しています。{ "a":[{"b1":10}, {"b2":11}], "c":"hi" }パス 一致する項目 注目すべきこと lax $.a.b1 10 'a'の配列エレメントの自動ネスト解除。'a[*]'として扱われます。strict $.a.b1 エラー 配列の自動ネスト解除なし。 lax $.c[0] "hi" 自動ラップによるスカラー値の単一エレメント配列への変換。 strict $.c[0] エラー 自動ラップによるスカラー値の単一エレメント配列への変換はなし。 - 次の例は、JSON_VALUE の動作と JSON_QUERY の動作の違いを示しています。この例では、以下の JSON ドキュメントに基づいています。
この例は、以下のパス結果に基づいています。{ "a": [1,2], "b": { "c1":1, "c2":2 } }
以下の表は、さまざまな SQL/JSON パス式を使用して JSON 文書内の項目にアクセスした結果を示しています。パス式 戻される値の数 戻り値 $.a 1 つ [1,2] $.b.* 複数 12演算子 $.a $.b.* 注目すべきこと JSON_VALUE エラー エラー 配列タイプへのアクセスおよび複数の一致があるためのエラー。 JSON_QUERY WITHOUT ARRAY WRAPPER [1,2] エラー 配列ラッパーなしで複数の値があるためのエラー。 JSON_QUERY WITH UNCONDITIONAL ARRAY WRAPPER [ [1,2] ] [1,2] タイプが配列の場合でも、配列ラッパーを使用する必要があります。 JSON_QUERY WITH CONDITIONAL ARRAY WRAPPER [1,2] [1,2] タイプが配列の場合、配列ラッパーは必要ありません。
