我是开发新手。在sql中我写了一个存储过程和 它工作正常,但我只是想确保它以正确的方式完成。
这里我在sp中使用IF语句来检查表中的日期列是否为NULL:
if ((select sdate
from tbla
where id='3') = Null)
begin
some query
end
这适用于所有情况还是我还需要检查''(空)?
答案 0 :(得分:11)
在SQL中,null不等于任何东西,包括其他空值。您需要使用is null
代替=
操作。
答案 1 :(得分:4)
Empty和NULL不是一回事,所以你需要分别检查一个空字符串。您还应该使用is null
而不是= null
来检查列是否为空。
答案 2 :(得分:3)
如果要在某些内容为null时显示其他表达式,Coalesce可能就是您想要的。
Select CASE When (null = null) Then 1 Else 0 END
结果:0
Select CASE When (null is null) Then 1 Else 0 END
结果:1
Select null + 'soemthing'
结果:null
Select Coalesce(null, 'DefaultValueIfNull')
结果:DefaultValueIfNull
仅当lastname不为null时才附加空格和姓氏:
select FirstName + coalesce(' ' + LastName, '') From People
仅当lastname不为null时才附加空格和姓氏,并处理空LastName:
select FirstName + coalesce(' ' + CASE LastName When '' Then null Else LastName END, '') From People