引数の中から、最初の NULL でない式を返します。
構文
COALESCE ( expression [ ,...n ] )
引数
expression
任意のデータ型の式です。
n
複数の式を指定できることを示すプレースホルダです。すべての式は、同一の型であるか、暗黙の変換によって同一の型になる必要があります。
戻り値の型
expression と同一の値を返します。
解説
すべての引数が NULL の場合、COALESCE は NULL を返します。
COALESCE(expression1,...n) は、次の CASE 関数に相当します。
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
例
この例では、従業員の年収に関する情報を hourly_wage、salary、commission という 3 つの列に含む wages テーブルを示しています。ただし、1 人の従業員が受け取れるのは 1 タイプの給料だけです。すべての従業員に支払われている給料の総額を算出するには、COALESCE 関数を使って hourly_wage、salary、および commission から NULL でない値だけを取り出します。
SET NOCOUNT ON
GO
USE master
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'wages')
DROP TABLE wages
GO
CREATE TABLE wages
(
emp_id tinyint identity,
hourly_wage decimal NULL,
salary decimal NULL,
commission decimal NULL,
num_sales tinyint NULL
)
GO
INSERT wages VALUES(10.00, NULL, NULL, NULL)
INSERT wages VALUES(20.00, NULL, NULL, NULL)
INSERT wages VALUES(30.00, NULL, NULL, NULL)
INSERT wages VALUES(40.00, NULL, NULL, NULL)
INSERT wages VALUES(NULL, 10000.00, NULL, NULL)
INSERT wages VALUES(NULL, 20000.00, NULL, NULL)
INSERT wages VALUES(NULL, 30000.00, NULL, NULL)
INSERT wages VALUES(NULL, 40000.00, NULL, NULL)
INSERT wages VALUES(NULL, NULL, 15000, 3)
INSERT wages VALUES(NULL, NULL, 25000, 2)
INSERT wages VALUES(NULL, NULL, 20000, 6)
INSERT wages VALUES(NULL, NULL, 14000, 4)
GO
SET NOCOUNT OFF
GO
SELECT CAST(COALESCE(hourly_wage * 40 * 52,
salary,
commission * num_sales) AS money) AS 'Total Salary'
FROM wages
GO
以下に結果セットを示します。
Total Salary
------------
20800.0000
41600.0000
62400.0000
83200.0000
10000.0000
20000.0000
30000.0000
40000.0000
45000.0000
50000.0000
120000.0000
56000.0000
(12 row(s) affected)
関連項目
CASE
システム関数