根据我的理解,IsNull Function将检查第一个值是否为null或空白,然后返回下一个值。
SELECT ISNULL(1,getdate())
但以上陈述给出了错误。有人可以帮助说明原因吗?
最佳答案
不允许从数据类型datetime到int的隐式转换,将第一个值设为char
SELECT ISNULL('1',getdate())
顺便说一句,请注意ISNULL不是ANSI是专有的,并且仅接受2个参数,而COALESCE接受得多
DECLARE @1 INT,@2 int, @3 INT, @4 int
SELECT @4 = 6
SELECT COALESCE(@1,@2,@3,@4)
下面的这句话是不正确的
IsNull函数将检查第一个值是否为null或空白,然后返回下一个值。
它不在乎空白
运行这个
SELECT ISNULL('','A') -- Blank is returned not A
SELECT ISNULL(NULL,'A') -- A is returned because the first value is NULL
ISNULL和COALESCE之间的另一个区别是ISNULL将返回与第一个参数相同的长度
运行这个
DECLARE @c CHAR(3)
SELECT ISNULL(@c,'not available') -- not
SELECT COALESCE(@c,'not available') --not available
关于sql-server - SQL Server中的ISNULL行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7455655/