NEW JSONコンストラクタ式

Teradata® Database JSONデータ型

brand
Software
prodname
Teradata Database
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1150-162K-JPN

目的

NEW JSONコンストラクタは、JSON型インスタンスを割り当てます。このコンストラクタは、引数(デフォルト コンストラクタ)なしで使用できますが、JSONインスタンスの値、文字セット、またはストレージ形式を設定する引数とともに使用することもできます。結果として得られるJSONインスタンスは、JSON型を列に挿入するために使用でき、また関数またはメソッドへのJSON型引数として使用できます。

構文



構文要素

'JSON_String'
結果として得られるJSONインスタンスの値となる文字列です。
文字列は、JSON文字列の構文で説明されているJSON構文に準拠する必要があります。
LATIN
UNICODE
結果として得られるJSONインスタンスの文字セット。
文字セットを指定しない場合、ユーザーのデフォルト文字セットが使用されます。
BSON
UBJSON
結果として得られるJSONインスタンスのストレージ形式。
コンストラクタの結果は、BSONまたはUBJSONの形式で格納されたデータを含むJSON型です。
JSON_binary_data
結果として得られるJSONインスタンスの値となるJSONバイナリ データです。
バイナリ データ型は、BYTE、VARBYTE、または、BLOBである必要があります。
JSON_binary_dataを指定した場合は 、BSONまたはUBJSONを指定する必要があります。

ルールと制限

次のように、JSON_StringまたはJSON_binary_dataは、結果として得られるJSON型の最大長以下にする必要があります。
  • LATINの16,776,192文字またはJSONテキスト データのUNICODEの8,388,096文字
  • 16,776,192バイトのバイナリ データ

JSON型を列に挿入する場合や関数やメソッドで引数として使用する場合は、このデータが絶対最大長未満の可能性があるので、JSONデータの実際の長さがこの特定のインスタンスに指定されている最大長以下であることがチェックされます。現在の使用量に対してデータが大きすぎる場合は、エラーが報告されます。切り捨ては行なわれません。

使用上の注意

デフォルト コンストラクタでは、引数はコンストラクタ式に渡されません。NEW JSON()は、ユーザーの文字セットに基づいた文字セットで空のJSON型の値を初期化します。データはnull文字列に設定されます。デフォルトのストレージ形式はテキストです。

空のJSONオブジェクトを引数としてコンストラクタに渡す場合(例えば、NEW JSON(''))、コンストラクタは空のJSONオブジェクトを返します。

NEW JSONコンストラクタを使用して、バイナリ形式で格納されているJSON文書を構成できます。ただし、このコンストラクタの結果をクライアントに送信する場合は、バイナリ データのテキスト表現を含むCLOBとして送信されます。

JSONエンティティ参照(ドット表記構文)で説明されているように、JSONエンティティ参照をコンストラクタ式の最後に追加できます。

例: デフォルトのJSONコンストラクタ

NEW JSON();

例: テキスト文字列の引数を含むJSONコンストラクタ

NEW JSON ('{"name" : "cameron", "age" : 24}')

NEW JSON ('{"name" : "cameron", "age" : 24}', LATIN)

例: バイナリ データ引数を含むJSONコンストラクタ

BSON文書の16進形式の例を示します。16進文字列リテラルを使用してBSON形式でJSON文書が作成されることはありません。そうではなく、データのトークンは、太字の通常フォントで示されます。各種の16進値は次のように解釈されます。
  • 0x00000016: BSONデータの全長
  • 0x02: キーの後に続くデータが'string'型であることを示す
  • 0x68、0x65、0x6C、0x6C、0x6F, 0x00: キーとして解釈される、nullで終わる文字列'hello'
  • 0x00000006: キーの後に続く文字列値の長さ
  • 0x77、0x6F, 0x72、0x6C、0x64、0x00: 値として解釈される、nullで終わる文字列'world'
  • 0x00: 文書の終了を示すnull終了子

データは、テキスト形式で次のようにJSON文書を表わします。

{"hello":"world"}
/*Creates a JSON document stored as BSON, explicitly*/
SELECT NEW JSON ('160000000268656C6C6F0006000000776F726C640000'xb, BSON);