COALESCE
返回其参数中第一个非空表达式。 语法
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
下面给出一示例
运行结果
emp_id hourly_wage salary commission num_sales
------ -------------------- -------------------- -------------------- ---------
1 10 NULL NULL NULL
2 20 NULL NULL NULL
3 30 NULL NULL NULL
4 40 NULL NULL NULL
5 NULL 10000 NULL NULL
6 NULL 20000 NULL NULL
7 NULL 30000 NULL NULL
8 NULL 40000 NULL NULL
9 NULL NULL 15000 3
10 NULL NULL 25000 2
11 NULL NULL 20000 6
12 NULL NULL 14000 4
(所影响的行数为 12 行)
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 行)
返回其参数中第一个非空表达式。 语法
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
下面给出一示例
01 /****************************************************************
02 ** 在下面的示例中,显示包含三列有关某个雇员每年工资收入信息的#wages表:
03 **hourly_wage、salary 和 commission。但是,每个雇员只能接受一种付款方式。
04 **若要确定支付给所有雇员的工资总额,请使用 COALESCE 函数接受在
05 **hourly_wage、salary 和 commission 中找到的非空值。
06 ****************************************************************/
07 SET NOCOUNT ON
08 GO
09 IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
10 WHERE TABLE_NAME = '#wages')
11 DROP TABLE #wages
12 GO
13 CREATE TABLE #wages
14 (
15 emp_id tinyint identity,
16 hourly_wage decimal NULL,
17 salary decimal NULL,
18 commission decimal NULL,
19 num_sales tinyint NULL
20 )
21 GO
22 INSERT #wages VALUES(10.00, NULL, NULL, NULL)
23 INSERT #wages VALUES(20.00, NULL, NULL, NULL)
24 INSERT #wages VALUES(30.00, NULL, NULL, NULL)
25 INSERT #wages VALUES(40.00, NULL, NULL, NULL)
26 INSERT #wages VALUES(NULL, 10000.00, NULL, NULL)
27 INSERT #wages VALUES(NULL, 20000.00, NULL, NULL)
28 INSERT #wages VALUES(NULL, 30000.00, NULL, NULL)
29 INSERT #wages VALUES(NULL, 40000.00, NULL, NULL)
30 INSERT #wages VALUES(NULL, NULL, 15000, 3)
31 INSERT #wages VALUES(NULL, NULL, 25000, 2)
32 INSERT #wages VALUES(NULL, NULL, 20000, 6)
33 INSERT #wages VALUES(NULL, NULL, 14000, 4)
34 GO
35 SET NOCOUNT OFF
36 GO
37 SELECT * FROM #wages
38 GO
39 SELECT CAST(COALESCE(hourly_wage * 40 * 52,salary,commission * num_sales) AS money) AS 'Total Salary'
40 FROM #wages
41 GO
02 ** 在下面的示例中,显示包含三列有关某个雇员每年工资收入信息的#wages表:
03 **hourly_wage、salary 和 commission。但是,每个雇员只能接受一种付款方式。
04 **若要确定支付给所有雇员的工资总额,请使用 COALESCE 函数接受在
05 **hourly_wage、salary 和 commission 中找到的非空值。
06 ****************************************************************/
07 SET NOCOUNT ON
08 GO
09 IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
10 WHERE TABLE_NAME = '#wages')
11 DROP TABLE #wages
12 GO
13 CREATE TABLE #wages
14 (
15 emp_id tinyint identity,
16 hourly_wage decimal NULL,
17 salary decimal NULL,
18 commission decimal NULL,
19 num_sales tinyint NULL
20 )
21 GO
22 INSERT #wages VALUES(10.00, NULL, NULL, NULL)
23 INSERT #wages VALUES(20.00, NULL, NULL, NULL)
24 INSERT #wages VALUES(30.00, NULL, NULL, NULL)
25 INSERT #wages VALUES(40.00, NULL, NULL, NULL)
26 INSERT #wages VALUES(NULL, 10000.00, NULL, NULL)
27 INSERT #wages VALUES(NULL, 20000.00, NULL, NULL)
28 INSERT #wages VALUES(NULL, 30000.00, NULL, NULL)
29 INSERT #wages VALUES(NULL, 40000.00, NULL, NULL)
30 INSERT #wages VALUES(NULL, NULL, 15000, 3)
31 INSERT #wages VALUES(NULL, NULL, 25000, 2)
32 INSERT #wages VALUES(NULL, NULL, 20000, 6)
33 INSERT #wages VALUES(NULL, NULL, 14000, 4)
34 GO
35 SET NOCOUNT OFF
36 GO
37 SELECT * FROM #wages
38 GO
39 SELECT CAST(COALESCE(hourly_wage * 40 * 52,salary,commission * num_sales) AS money) AS 'Total Salary'
40 FROM #wages
41 GO
运行结果
emp_id hourly_wage salary commission num_sales
------ -------------------- -------------------- -------------------- ---------
1 10 NULL NULL NULL
2 20 NULL NULL NULL
3 30 NULL NULL NULL
4 40 NULL NULL NULL
5 NULL 10000 NULL NULL
6 NULL 20000 NULL NULL
7 NULL 30000 NULL NULL
8 NULL 40000 NULL NULL
9 NULL NULL 15000 3
10 NULL NULL 25000 2
11 NULL NULL 20000 6
12 NULL NULL 14000 4
(所影响的行数为 12 行)
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 行)