根据我的理解,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/

10-13 07:43