Ish*_*ech 2 sql-server date isnull
根据我的理解,IsNull函数检查第一个值,如果它为null或空白,则返回下一个值.
SELECT ISNULL(1,getdate())
Run Code Online (Sandbox Code Playgroud)
但上述陈述给出了错误.任何人都可以帮助突出原因吗?
不允许从数据类型datetime到int的隐式转换,将第一个值设为char
SELECT ISNULL('1',getdate())
Run Code Online (Sandbox Code Playgroud)
顺便说一句,请注意,ISNULL不是ANSI的专属,只接受2个参数,COALESCE接受更多
DECLARE @1 INT,@2 int, @3 INT, @4 int
SELECT @4 = 6
SELECT COALESCE(@1,@2,@3,@4)
Run Code Online (Sandbox Code Playgroud)
以下声明不正确
IsNull函数检查第一个值,如果它为null或为空,则返回下一个值.
它不关心空白
跑这个
SELECT ISNULL('','A') -- Blank is returned not A
SELECT ISNULL(NULL,'A') -- A is returned because the first value is NULL
Run Code Online (Sandbox Code Playgroud)
ISNULL和COALESCE之间的另一个区别是ISNULL将返回与第一个参数相同的长度
跑这个
DECLARE @c CHAR(3)
SELECT ISNULL(@c,'not available') -- not
SELECT COALESCE(@c,'not available') --not available
Run Code Online (Sandbox Code Playgroud)