■ はじめに
Snowflake における データ型 の キャスト(Cast)について扱う
目次
【0】Snowflakeのキャストの仕方 【1】CAST 【2】:: 演算子 【3】TO_ データ型 【4】TRY_CAST 【5】TRY_TO_ データ型
【0】Snowflakeのキャストの仕方
snowflake でのキャストの仕方は、以下の通り。 【1】CAST 【2】:: 演算子 【3】TO_ データ型 【4】TRY_CAST 【5】TRY_TO_ データ型 ※ 日時関連のキャストの詳細は、以下の関連記事を参照のこと。
Snowflake ~ 日時関連 ~
https://dk521123.hatenablog.com/entry/2022/06/17/113003
【1】CAST
構文
CAST( <source_expr> AS <target_data_type> )
公式ドキュメント
https://docs.snowflake.com/ja/sql-reference/functions/cast.html
【2】:: 演算子
* 「【1】CAST」の代替構文
構文
<source_expr> :: <target_data_type>
公式ドキュメント
https://docs.snowflake.com/ja/sql-reference/functions/cast.html
【3】TO_ データ型
構文
https://docs.snowflake.com/ja/sql-reference/functions/to_char.html
-- TO_VARCHAR の場合 TO_VARCHAR( <expr> ) TO_VARCHAR( <numeric_expr> [, '<format>' ] ) TO_VARCHAR( <date_or_time_expr> [, '<format>' ] ) TO_VARCHAR( <binary_expr> [, '<format>' ] )
補足:TO_BOOLEAN
https://docs.snowflake.com/ja/sql-reference/functions/to_boolean.html
より抜粋 ~~~~~~~ 使用上の注意 テキスト式の場合、文字列は次のようになります。 'true'、 't'、 'yes'、 'y'、 'on'、 '1' は TRUEを返します。 'false'、 'f'、 'no'、 'n'、 'off'、 '0' は FALSEを返します。 他のすべての文字列はエラーを返します。 文字列は大文字と小文字を区別しません。 数値式の場合: 0 は FALSEを返します。 ゼロ以外の値はすべて TRUEを返します。 ~~~~~~~
【4】TRY_CAST
* 変換できた場合は、そのままキャストし、 変換できなかった場合は、null を返却 * エラー「Failed to cast variant value "" to TIMESTAMP_NTZ」 の調査中に、以下のサイトがヒットしたことにより、存在を確認 => ただし、TRY_CASTのみでは解決できず (詳細は、後述「使用上の注意」を参照)
* 対応案については、以下の関連記事を参照のこと。
エラー「Failed to cast variant value "" to XXX」時の対応
https://dk521123.hatenablog.com/entry/2021/12/17/102659
構文
TRY_CAST( <source_string_expr> AS <target_data_type> )
使用上の注意
* 引数 <source_string_expr> は、あくまで「文字列」 => なので、「variant value」等だと例外が発生する
公式ドキュメント
https://docs.snowflake.com/ja/sql-reference/functions/try_cast.html
【5】TRY_TO_ データ型
* 「【3】TO_ データ型」の TRY_CAST版
構文
-- TRY_TO_TIMESTAMP の場合 TRY_TO_TIMESTAMP( <string_expr> [, <format> ] ) TRY_TO_TIMESTAMP( '<integer>' )
公式ドキュメント
TRY_TO_TIMESTAMP / TRY_TO_TIMESTAMP_*
https://docs.snowflake.com/ja/sql-reference/functions/try_to_timestamp.html
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / データ型 ~
https://dk521123.hatenablog.com/entry/2021/12/16/095524
Snowflake ~ 基本編 / データロード ~
https://dk521123.hatenablog.com/entry/2021/11/15/221245
Snowflake ~ 基本編 / アクセス制御 ~
https://dk521123.hatenablog.com/entry/2021/11/16/231010
Snowflake ~ 基本編 / ゼロコピークローン ~
https://dk521123.hatenablog.com/entry/2021/11/27/134934
Snowflake ~ 日時関連 ~
https://dk521123.hatenablog.com/entry/2022/06/17/113003
エラー「Failed to cast variant value "" to XXX」時の対応
https://dk521123.hatenablog.com/entry/2021/12/17/102659