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
下面给出一示例
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
运行结果
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 行)