JSONPathリクエストの例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/uwa1591040057999.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage

この例では、以下のJSONインスタンスを使用してJSONPath構文の特定の要素を示します。対応するテーブルには、構成要素や使用例についての説明を示しています。

{
    "customer" : "CustomerName",
    "orderID" : 3,
    "price" : "$100000.00",
    "items" :
       [
          { "ID" : 1, "name" : "disk", "amt" : 10 },
          { "ID" : 2, "name" : "RAM", "amt" : 20 },
          { "ID" : 3, "name" : "monitor", "amt" : 30 },
          { "ID" : 4, "name" : "keyboard", "amt" : 40 },
          { "ID" : 5, "name" : "camera", "amt" : 50 },
          { "ID" : 6, "name" : "button", "amt" : 60 },
          { "ID" : 7, "name" : "mouse", "amt" : 70 },
          { "ID" : 8, "name" : "pen", "amt" : 80 }
       ]
}
JSONPath 説明 例の説明 結果
$ ルート オブジェクト/要素 $.customer 顧客の名前 CustomerName
@ 現在のオブジェクト/要素 $.items[(@.length-1)] この順序での最後の項目。

この文脈で'length'キーワードを使用すると、現在のJSON配列の長さとして解釈され、JSON配列のプロパティとして扱われます。このような解釈は、'length'が'@.'構文の直後に置かれる場合に限って行なわれます。'length'という単語が式でそれ以降に置かれる場合は('@.firstChild.length'など)、何らかのエンティティのプロパティとしてではなく、そのエンティティの子の名前として解釈されます。

{"ID":8,"name":"pen","amt":80}
.. 再帰的な降下 $..name すべての項目名 ["disk","RAM","monitor", "keyboard","camera","button","mouse","pen"]
* ワイルドカード

すべてのオブジェクト/要素(名前を問わない)

$.items[0].* 順序の最初の項目のすべての記述 [1,"disk",10]
[ ] ネイティブ配列演算子 $.items[0] 最初の項目 {"ID":1,"name":"disk","amt":10}
[start,end] インデックスの一覧 $.items[0,1] 最初の2つの項目 [{"ID":1,"name":"disk","amt":10},

{"ID":2,"name":"RAM","amt":20}]

[start:end:step] 配列スライス演算子

startを指定しない場合、デフォルトは最初のインデックスです。

endを指定しない場合、デフォルトは最後のインデックスです。

stepを指定しない場合、デフォルトは1のステップです。

$.items[0:4:2] 1~5(最後のインデックスを含まない)の2ステップごとのすべての項目(つまり、項目1と3) [{"ID":1,"name":"disk","amt":10},

{"ID":3,"name":"monitor","amt":30}]

?( ) フィルタ(スクリプト)式を適用します $.items[?(@.amt<50)] 50未満の数量を注文したすべての項目をフィルタします [{"ID":1,"name":"disk","amt":10},

{"ID":2,"name":"RAM","amt":20},

{"ID":3,"name":"monitor","amt":30},

{"ID":4,"name":"keyboard","amt":40}]

( ) スクリプト式、基になるスクリプト エンジンを使用 $.items[(@.length-1)] 順序の最後の項目 {"ID":8,"name":"pen","amt":80}