NULL 操作の関数(ISNULL, COALESCE)
NULLを操作する関数は一般的な「ISNULL」がありますが、「COALESCE」という関数もあります。
それでは「ISNULL」、「COALESCE」の違いを説明します。
まずは「ISNULL」を説明します。
DECLARE @Amount int
SET @Amount = NULL
SELECT ISNULL(@Amount, 0) AS [Result1]
SET @Amount = 10
SELECT ISNULL(@Amount, 0) AS [Result2]
実行結果
「ISNULL」関数は、第1引数のデータがNULLの場合、第2引数のデータに置き換えます。
この関数は一般的によく使われていると思います。
では、「COALESCE」について説明します。
DECLARE @Amount int
DECLARE @Amount1 int
SET @Amount = NULL
SET @Amount1 = NULL
SELECT COALESCE(@Amount, 0) AS [Result1-1]
SELECT COALESCE(@Amount, @Amount1, 3) AS [Result1-2]
SET @Amount = NULL
SET @Amount1 = 10
SELECT COALESCE(@Amount, 0) AS [Result2-1]
SELECT COALESCE(@Amount, @Amount1, NULL, 3) AS [Result2-2]
実行結果
[Result1-1]の部分を見てください。
SELECT COALESCE(@Amount, 0) AS [Result1-1]
これは「ISNULL」と同じく第1引数のデータがNULLの場合、第2引数のデータに置き換えます。
それでは[Result1-2]の部分を見てください。
SELECT COALESCE(@Amount, @Amount1, 3) AS [Result1-2]
引数が第3引数まであります。
これは、第1引数のデータがNULLの場合、第2引数のデータに置き換えます。
ですが、第2引数のデータもNULLの場合、第3引数のデータに置き換えます。
「ISNULL」は引数が第2引数までですが、
「COALESCE」は引数の第3引数、第4引数~第(N)引数。。引数の制限はないです。
基本的には「ISNULL」がよく使われていますが、
実際に開発をしてみると「COALESCE」も使えるところがたまにありますので、
十分にテストして覚えておきましょう~~~~