16.20 - JSONエンティティ参照(ドット表記構文) - Teradata Vantage NewSQL Engine

Teradata Vantage™ JSONデータ型

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
created_date
2019年3月
category
プログラミング リファレンス
featnum
B035-1150-162K-JPN

JSONのネイティブ コンテキストであるJavascriptでは、JSONインスタンスの構造に応じて、ドット表記と配列インデックスを使用してJSONデータをたどることができます。これはJSONエンティティ参照と呼ばれ、次の構文を使用してJSONインスタンスのエンティティを取得できます。JSONエンティティ参照構文は、オプションのバイナリ ストレージ形式のいずれかを使用する列でも使用できます。

構文

















JSON_expr
JSONデータ型と評価される式。
Object Member
下降演算子から構成されName構文要素が続きます。
下降演算子は次のいずれかです。
  • 子演算子'.'
  • 再帰的な下降演算子'..'
Name
二重引用符で囲まれたTeradataの非予約語または非予約文字列リテラル。
Array Element
オプションの再帰下降演算子'.'の後に括弧で囲まれたインデックス値を続けて構成されています。
インデックス値は次のいずれかです。
  • 符号なしINTEGER値
  • ワイルドカード演算子' *'
Wildcard
下降演算子の後にワイルドカード文字' *'を続けて構成されています。
下降演算子は次のいずれかです。
  • 子演算子'.'
  • 再帰的な下降演算子'..'
ワイルドカード演算子は名前付き項目とインデックス項目の両方の参照に使用できます。
Name or Index List
オプションの再帰下降演算子'.'の後に括弧で囲まれた2つ以上のカンマ区切りのリスト値を続けて構成されています。
リスト値は次のいずれかです。
  • Name構文要素
  • 符号なしINTEGER値
例:
  • [a、b、c]などの名前リスト
  • [0,3,5] などのインデックスリスト
Slice
オプションの再帰下降演算子'.'の後に括弧で囲まれた2つまたは3つのカンマ区切りの整数値を続けて構成されています。
例えば、[0:5:3]

戻り値

ドット表記文字列に次の構文要素のいずれかがある場合は、複数の結果が返されることが考えられます。
  • 再帰下降演算子
  • ワイルドカード
  • 名前またはインデックス リスト
  • スライス

必要に応じて、これらの構文要素の1つ以上を含むドット表記クエリーが結果の一覧を返すことがあります。

ドット表記法構文を使用して、JSONオブジェクトのメンバーまたは配列要素を取得する場合、結果として得られるデータはVARCHAR値です。 指定された構文を満たす複数のエンティティが見つかった場合は、複数の結果が見つかったことを示す警告やエラー メッセージ文字列が返されます。 これらの場合に、エラー文字列の代わりに値のリストが返されることが望ましい場合は、次のいずれかを実行します。
  • DBSコントロール フィールドDotNotationOnErrorConditionを適切に設定します。
    このDBSコントロール フィールドは、システム全体ですべてのドット表記クエリーの動作を変更するので、全ユーザーのニーズに対応するようにこのフラグを適切に設定するよう注意する必要があります。
  • SET SESSION DOT NOTATION...ON ERROR文を使用して、システム レベルの代わりにセッションごとに動作を指定します。

戻り値のデフォルト長は4,096文字ですが、DBS制御のJSON_AttributeSizeフィールドを使用してデフォルト長を変更できます。結果が指定された長さを超えるとエラーが返されます。戻り値に設定できる最大長は32,000文字です。

エンティティが見つからないか、または参照されるJSONインスタンスがnullの場合、Teradata NULLが返されます。

結果が空の文字列の場合は、空の文字列が返されます。

DBSコントロール フィールドDotNotationOnErrorConditionおよびJSON_AttributeSizeの詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。

SET SESSION DOT NOTATION...ON ERROR文の詳細については、<Teradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

使用上の注意

JSONドット表記式を別のデータ型にキャストして変換が失敗した場合、エラーの代わりにNULL値が返されます。これは、対象とするターゲットのデータ型と一致しない異常を含む可能性があるダーティ データを処理するのに役立ちます。このルールの例外については、JSON型のキャストについてを参照してください。

ドット表記で表わされるものは、JSONExtractValueメソッドまたはJSONExtractLargeValueメソッドを呼び出すことによって表現できます。ドット表記は、構造化データと半構造化データの構成要素への容易なアクセスを可能にするTeradata SQLの最適化として提供されています。

制限

JSONインスタンスのエンティティは更新できないので、SET句のターゲット部分にJSONエンティティ参照は使用できません。