知っておくと便利な関数 - NULLIF
知っておくと便利な関数 - NULLIF
今回は知っておくと便利なビルトイン関数のひとつ、 NULLIF についてです。
NULLIF ファンクション
NULLIF ファンクションは、二つの引数を受け取り、一つ目と二つ目の引数が同じ場合は NULL を返し、違う場合は一つ目の引数を返す関数です。
構文は次の通りです。
NULLIF ( [値 1] , [値 2] )
戻り値のデータ型は [値 1] のデータ型になります。
行われる処理は以下の CASE 文と同じです。
CASE WHEN [値 1] = [値 2] THEN NULL ELSE [値 1] END
NULLIF 関数を使って、変数に 'N/A' と入っている時は NULL に変換してみましょう。
DECLARE @InputValue1 VARCHAR(50) = 'ABC', @InputValue2 VARCHAR(50) = 'N/A'; SELECT NULLIF(@InputValue1, 'N/A') AS Value1, NULLIF(@InputValue2, 'N/A') AS Value2;
@InputValue2 のほうは 'N/A' と等しいので、NULL が返ってきていますね。
次のような感じで、入力の引数に空文字列が入っている場合は NULL に変換してテーブルに保存したいような時にも便利です。
DECLARE @InputValue1 VARCHAR(50) = ''; SET @InputValue1 = NULLIF(@InputValue1, '');
[値 1] と [値 2] のデータ型が違う場合、暗黙的なデータ型の変換が行われて比較されるので、このように変換できない場合はエラーになってしまうのでご注意くださいね!