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 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!