返回其參數(shù)中第一個非空表達(dá)式。
COALESCE ( expression [ ,...n ] )
expression
任何類型的表達(dá)式。
n
表示可以指定多個表達(dá)式的占位符。所有表達(dá)式必須是相同類型,或者可以隱性轉(zhuǎn)換為相同的類型。
將相同的值作為 expression 返回。
如果所有自變量均為 NULL,則 COALESCE 返回 NULL 值。
COALESCE(expression1,...n) 與此 CASE 函數(shù)等價:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
在下面的示例中,顯示包含三列有關(guān)某個雇員每年工資收入信息的 wages 表:hourly_wage、salary 和 commission。但是,每個雇員只能接受一種付款方式。若要確定支付給所有雇員的工資總額,請使用 COALESCE 函數(shù)接受在 hourly_wage、salary 和 commission 中找到的非空值。
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
下面是結(jié)果集:
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)
相關(guān)文章