sqlserver對于空值、NULL的判定與轉換,最常用的就是ISNULL函數,那么,既然有了ISNULL函數,為什么還要引入Coalesce函數呢?它們之間有什么區別呢?
打開SQL Server Management Studio辦理東西,新建一張測試表 NullTestTbl
CREATE TABLE dbo.NullTestTbl(
Id varchar(40) NOT NULL,
Col1 varchar(50) NULL,
Col2 varchar(50) NULL,
Col3 varchar(50) NULL,
Col4 varchar(50) NULL,
)
往測試表 NullTestTbl 中插入多行測試數據
INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), '第一行第二列', '第一行第三列', '第一行第四列', '第一行第五列');
INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), NULL, '第二行第三列', '第二行第四列', '第二行第五列');
INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), '', '第三行第三列', '第三行第四列', '第三行第五列');
INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), '', '', '', '第三行第五列');
INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), NULL, NULL, NULL, NULL);
利用ISNULL判定值為NULL的數據,從執行成果看出,ISNULL對值為NULL的字段會轉換為指心猿意馬的值返回
利用ISNULL判定值為空字符串的數據,從執行成果看出,ISNULL對空字符串值,并不會進行轉換,直接返回空字符串
利用Coalesce判定值為NULL的數據,從直接成果看出,Coalesce對值為NULL的字段會轉換為指心猿意馬的值返回
利用Coalesce判定值為空字符串的數據,從執行成果看出,Coalesce對空字符串值,并不會進行轉換,直接返回空字符串。
網上有良多都說Coalesce判定值為空字符串,會返回后面指心猿意馬的值,其實網上說法是錯誤的,都沒顛末驗證
ISNULL與Coalesce的區別
1)兩個函數對于NULL、空字符串的判定都是一樣的結果
2)ISNULL最多只有兩個參數;Coalesce可以多良多個參數,可是,必需有一個參數返回成果不為NULL
3)Coalesce返回所有參數中第一個不是NULL的成果
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!