CONVERT、CASTより便利なTRY_CONVERT、TRY_CAST

SQLでデータ型の変換の関数の、CONVERTやCASTは利用頻度が高いと思います。ただし、CONVERT、CASTは型変換できない場合はクエリの実行エラーとなってしまい期待した結果が戻らないことがあります。例えばYYYYMMDDの数値、もしくは文字型のレコードから日付型に変換したい場合、「00000000」や「99999999」といったレコードがある場合がそれに該当します。

SQL SERVERの場合、上記のような場合でもエラーが回避できる、TRY_CONVERT、TRY_CASTという関数が準備されています。TRY_CONVERT、TRY_CASTではデータ型の変換ができない場合は、そのレコードはNULLで結果を返すようになります。そのため、エラー回避ロジックを気にする必要がないため便利です。

なお、引数などの使い方はCONVERT、CASTと同様になります。

Bigqueryの場合は…SAFE_CAST

TRY_CONVERT、TRY_CASTはSQL SERVERの関数です。

Bigqueryにも同様の関数があります。Bigqueryの場合は「SAFE_CAST」となります。使い方は通常の「CAST」関数と同様です。

不正データを許容しない場合や、不正データを発見したい場合などは、逆にエラーにならないことで問題が出るケースでは使い分けは必要ですが、TRY_CONVERT、TRY_CAST、SAFE_CASTを利用する方が無難な場合の方が多いように思います。

コメントを残す