我是新来的发展。在sql中,我写了一个存储过程,它工作正常,但我只是想确保它是以正确的方式完成的。SQL NULL条件
这里我使用IF语句在SP检查表中的日期列是否为空或不是:
if ((select sdate
from tbla
where id='3') = Null)
begin
some query
end
将这项工作的所有情况还是需要检查“”(空)也?
我是新来的发展。在sql中,我写了一个存储过程,它工作正常,但我只是想确保它是以正确的方式完成的。SQL NULL条件
这里我使用IF语句在SP检查表中的日期列是否为空或不是:
if ((select sdate
from tbla
where id='3') = Null)
begin
some query
end
将这项工作的所有情况还是需要检查“”(空)也?
空和空不是一回事,所以你需要单独检查一个空字符串。您也应该使用is null
而不是= null
来检查列是否为空。
某些数据库(如Oracle)将空和NULL视为等效,但...... –
在SQL中null不等于任何东西,包括其他空值。您需要使用is null
而不是=
操作。
如果你想要显示一些其他的表达式,只要有东西为空,合并可能是你想要的。
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'
结果:空
Select Coalesce(null, 'DefaultValueIfNull')
结果:DefaultValueIfNull
添加一个空格,姓氏只有姓氏不为空:
select FirstName + coalesce(' ' + LastName, '') From People
添加一个空格,姓氏只有姓氏不为空,以处理空姓氏:
select FirstName + coalesce(' ' + CASE LastName When '' Then null Else LastName END, '') From People
取决于您的数据库 - 某些数据库将“空”和“NULL”等同 - 其他人不这样做。因此,为了获得您的情况的正确答案,我们需要知道您正在使用的**数据库系统**及其版本。 “SQL”就是这样 - 结构化查询语言 - 这是**不是**数据库系统..... –
可能重复[在SQL中获得null == null](http://stackoverflow.com/questions/ 191640/get-null-null-in-sql) – JNK