[SQL Server] NULL操作の関数 (ISNULL, COALESCE)

inno
2013-12-21 21:45 3515 0
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」も使えるところがたまにありますので、
十分にテストして覚えておきましょう~~~~

コメント