- カテゴリ:
CAST、 ::
¶
あるデータ型の値を別のデータ型に変換します。CAST のセマンティクスは、対応する TO_ datatype
変換関数のセマンティクスと同じです。キャストが不可能な場合は、エラーが発生します。詳細については、個々の TO_ datatype
変換関数をご参照ください。
::
演算子は、 CASTの代替構文を提供します。
- こちらもご参照ください。
構文¶
CAST( <source_expr> AS <target_data_type> )
[ RENAME FIELDS | ADD FIELDS ]
<source_expr> :: <target_data_type>
引数¶
source_expr
異なるデータ型に変換される、サポートされているデータ型の式です。
target_data_type
式を変換するデータ型です。データ型が、 精度やスケール (数値/小数用)などの追加のプロパティをサポートする場合は、プロパティを含めることができます。
RENAME FIELDS
構造化 OBJECTs の場合、異なるキーと値のペアを使用するために OBJECT を変更することを指定します。元のオブジェクトの値は、新しいキーと値のペアにそれらが表示される順でコピーされます。
例については、 例: OBJECT 内のキー名の変更 をご参照ください。
ADD FIELDS
構造化 OBJECTs の場合、 OBJECT にキーと値のペアを追加することを指定します。
例については、 例: OBJECT へのキーの追加 をご参照ください。
新しく追加されたキーの値は NULL に設定されます。これらのキーに値を割り当てる場合は、 OBJECT_INSERT 関数を代わりに呼び出します。
使用上の注意¶
スケールが入力値を保持するのに十分でない場合、関数は値を丸めます。
精度が入力値を保持するのに十分でない場合、関数はエラーを発生します。
Parquetファイルへのデータのアンロード中に、数値列が整数データ型の形式に明示的にキャストされる場合、Parquetファイル内にあるこれらの列のデータ型は INT です。詳細については、 明示的に数値列をParquetデータ型に変換する をご参照ください。
例¶
数値を含む文字列を、指定されたスケール(2)で小数に変換します。
SELECT CAST('1.2345' AS DECIMAL(15,2)); +---------------------------------+ | CAST('1.2345' AS DECIMAL(15,2)) | |---------------------------------| | 1.23 | +---------------------------------+
::
表記を使用して、同じ文字列をスケール5の小数に変換します。
SELECT '1.2345'::DECIMAL(15,5); +-------------------------+ | '1.2345'::DECIMAL(15,5) | |-------------------------| | 1.23450 | +-------------------------+
数値を整数に変換します。
SELECT CAST(1.56 AS INTEGER); +-----------------------+ | CAST(1.56 AS INTEGER) | |-----------------------| | 2 | +-----------------------+
日付を含む文字列をタイムスタンプに変換します。
SELECT CAST('05-Mar-2014' AS TIMESTAMP); +----------------------------------+ | CAST('05-MAR-2014' AS TIMESTAMP) | |----------------------------------| | 2014-03-05 00:00:00.000 | +----------------------------------+