JSONのネイティブ コンテキストであるJavascriptでは、JSONインスタンスの構造に応じて、ドット表記と配列インデックスを使用してJSONデータをたどることができます。これはJSONエンティティ参照と呼ばれ、次の構文を使用してJSONインスタンスのエンティティを取得できます。JSONエンティティ参照構文は、オプションのバイナリ ストレージ形式のいずれかを使用する列でも使用できます。
構文
- JSON_expr
- JSONデータ型と評価される式。
- Object Member
- 下降演算子から構成されName構文要素が続きます。
- Name
- 二重引用符で囲まれたTeradataの非予約語または非予約文字列リテラル。
- Array Element
- オプションの再帰下降演算子'.'の後に括弧で囲まれたインデックス値を続けて構成されています。
- Wildcard
- 下降演算子の後にワイルドカード文字' *'を続けて構成されています。
- Name or Index List
- オプションの再帰下降演算子'.'の後に括弧で囲まれた2つ以上のカンマ区切りのリスト値を続けて構成されています。
- Slice
- オプションの再帰下降演算子'.'の後に括弧で囲まれた2つまたは3つのカンマ区切りの整数値を続けて構成されています。
戻り値
- 再帰下降演算子
- ワイルドカード
- 名前またはインデックス リスト
- スライス
必要に応じて、これらの構文要素の1つ以上を含むドット表記クエリーが結果の一覧を返すことがあります。
- 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エンティティ参照は使用できません。