JSONデータのキャストの例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年9月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/gzn1554761068186.ditamap
dita:ditavalPath
ja-JP/gzn1554761068186.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage

例: JSON型でキャストを使用

次のCAST文にドット表記式があります。

SELECT CAST(NEW JSON('{"a":"1"}')..a AS NUMBER);
結果:
> 1.E0
SELECT CAST(NEW JSON('{"a":"a"}')..a AS INTEGER);
結果:
> ?
次のCAST文は、結果として得られるJSON型のインライン長を指定します。
SELECT CAST('{}' AS JSON(300) INLINE LENGTH 100);
SELECT CAST(new JSON('{}', LATIN) AS JSON(10) INLINE LENGTH 10);
SELECT CAST(jsn1 AS JSON(300) INLINE LENGTH 300) FROM jsonTable;

キャストと格納の形式

JSON型にキャストする場合は、STORAGE FORMAT構文を使用して、ターゲットのJSON型で必要な格納形式を指定できます。これにより、BYTE/VARBYTE/BLOBデータとオプションのバイナリ形式のいずれかを使用して格納されたJSON型間の変換が容易になります。ある格納形式のJSONデータを他の格納形式にキャストできるように、異なる格納形式のJSON型間で変換することもできます。キャスト機能は暗黙的に呼び出すことができるので、オプションのバイナリ格納形式を使用するJSON列にデータを簡単にロードできます。

BYTE/VARBYTE/BLOBとJSON間でキャストすると、データはキャスト先のバイナリ ストレージ形式の指定に従います。

CHAR/VARCHAR/CLOBデータは、バイナリ形式でJSON型にキャストすることもできます。これは、JSON列にデータを挿入してそのデータをバイナリ形式のいずれかで格納する場合にのみ役立ちます。この場合、文字データは有効なJSON構文にする必要があります。そうしないとエラーが報告されます。バイナリ形式で利用できる任意の拡張データ型は、JSONテキスト形式がこれらの拡張機能を提供しないので、この場合には使用されないことに注意してください。拡張データ型として表わされるデータは、結果として得られるJSONテキストの文字列に変換されます。テキスト形式のJSONからオプションのバイナリ形式のいずれかで格納されているJSONにキャストする場合、同じルールが適用されます。

BSONとして格納されているJSONとUBJSONとして格納されているJSON間でキャストする場合、付随する拡張データ形式がターゲットにない拡張データ形式で指定されているソース データは、文字列値に変換されます。

次のSELECT文はすべて{"hello":"world"}を返しますが、異なるデータ型とストレージ形式として返します。

SELECT CAST('160000000268656C6C6F0006000000776F726C640000'xb AS JSON STORAGE FORMAT BSON);

SELECT CAST('{"hello":"world"}' AS JSON STORAGE FORMAT BSON);

SELECT CAST('{"hello":"world"}' AS JSON STORAGE FORMAT UBJSON);

SELECT CAST(NEW JSON('{"hello":"world"}') AS JSON STORAGE FORMAT BSON);

SELECT CAST(NEW JSON('{"hello":"world"}') AS JSON STORAGE FORMAT UBJSON);

SELECT CAST(NEW JSON('{"hello":"world"}',LATIN) AS JSON STORAGE FORMAT BSON);

SELECT CAST(NEW JSON('{"hello":"world"}',LATIN) AS JSON STORAGE FORMAT UBJSON);

SELECT CAST(NEW JSON('{"hello":"world"}',UNICODE) AS JSON STORAGE FORMAT BSON);

SELECT CAST(NEW JSON('{"hello":"world"}',UNICODE) AS JSON STORAGE FORMAT UBJSON);

SELECT CAST(NEW JSON('160000000268656C6C6F0006000000776F726C640000'xb, BSON) AS JSON STORAGE FORMAT UBJSON);