国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Transact—SQL中的對空值的處理函數(shù)COALESCE

2016-12-26 16:44桂云秋張磊周揚朱臣
科教導刊·電子版 2016年30期
關(guān)鍵詞:應(yīng)用

桂云秋+張磊+周揚+朱臣

摘 要 在數(shù)據(jù)庫查詢中,經(jīng)常會遇到對空值的處理,如何處理不當可能會帶來意想不到的結(jié)果。COALESCE函數(shù)能返回其參數(shù)中第一個非空表達式,在處理空值時常有非常好的效果。

關(guān)鍵詞 Transact-SQL COALESCE函數(shù) 應(yīng)用

在數(shù)據(jù)庫查詢中,經(jīng)常會遇到對空值的處理,如何處理不當可能會帶來意想不到的結(jié)果。COALESCE函數(shù)能返回其參數(shù)中第一個非空表達式,在處理空值時常有非常好的效果。

1語法及說明

COALESCE ( expression [ ,...n ] )

其中,expression 任何類型的表達式。返回數(shù)據(jù)類型優(yōu)先級最高的 expression 的數(shù)據(jù)類型。如果所有參數(shù)均為 NULL,則 COALESCE 返回 NULL。但是,至少應(yīng)有一個空值為 NULL 類型。

2應(yīng)用實例

在以下示例中,wages 表中包括以下三列有關(guān)雇員的年薪的信息:hourly wage、salary 和 commission。但是,每個雇員只能接受一種付款方式。若要確定支付給所有雇員的金額總數(shù),請使用 COALESCE 函數(shù),它只接受在 hourly_wage、salary 和 commission 中找到的非空值。

SET NOCOUNT ON;

USE master;

IF EXISTS (SELECT name FROM sys.tables

WHERE name = wages)

DROP TABLE wages;

CREATE TABLE wages

emp_id tinyint identity,

hourly_wage decimal NULL,

salary decimal NULL,

commission decimal NULL,

num_sales tinyint NULL

);

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);

SET NOCOUNT OFF;

SELECT CAST(COALESCE(hourly_wage * 40 * 52,

salary,

commission * num_sales) AS money) AS Total Salary

FROM wages;

COALESCE(expression1,...n) 與此 CASE 函數(shù)等效:

CASE

WHEN (expression1 IS NOT NULL) THEN expression1

...

WHEN (expressionN IS NOT NULL) THEN expressionN

ELSE NULL

END

3應(yīng)用說明

盡管 ISNULL 等效于 COALESCE,但它們的行為是不同的。包含具有非空參數(shù)的 ISNULL 的表達式將視為 NOT NULL,而包含具有非空參數(shù)的 COALESCE 的表達式將視為 NULL。在 SQL Server 中,若要對包含具有非空參數(shù)的 COALESCE 的表達式創(chuàng)建索引,可以使用 PERSISTED 列屬性將計算列持久化,如以下語句所示:

CREATE TABLE #CheckSumTest

ID int identity ,

Num int DEFAULT ( RAND() * 100 ) ,

RowCheckSum AS COALESCE( CHECKSUM( id , num ) , 0 ) PERSISTED PRIMARY KEY

參考文獻

[1] 杜佰林.網(wǎng)絡(luò)數(shù)據(jù)庫SQL Server 2000[M].清華出版社,2009,9.

[2] 何薇,舒后.網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)與應(yīng)用[M].清華大學出版社,2014,10.

猜你喜歡
應(yīng)用
多媒體技術(shù)在小學語文教學中的應(yīng)用研究
西昌市| 南陵县| 来凤县| 马龙县| 新沂市| 汉源县| 乌恰县| 长沙县| 岑溪市| 乐都县| 甘南县| 上杭县| 宁乡县| 潮安县| 呈贡县| 佛坪县| 札达县| 裕民县| 黄大仙区| 通州区| 额尔古纳市| 东乡县| 南雄市| 衡东县| 清水河县| 阜平县| 三门峡市| 东乡县| 望都县| 龙口市| 大关县| 屏东县| 望奎县| 天峨县| 乐亭县| 厦门市| 民权县| 陆丰市| 长岛县| 克东县| 通化市|