SQL存储过程变量null检查

SQL存储过程变量null检查,sql,stored-procedures,Sql,Stored Procedures,下面是我拥有的一个存储过程的一部分,如果您能告诉我为什么即使执行select语句后@DefaultID为null,它也不会进入if条件,这将非常有帮助,我必须遵循不同的方法将值分配给@DefaultID,才能进行空值检查 先谢谢你 DECLARE @DefaultID varchar(25) DECLARE @ISDefault varchar(1) SELECT @DefaultID = (SELECT TABLE1.DEFID as DEFID F

下面是我拥有的一个存储过程的一部分,如果您能告诉我为什么即使执行select语句后
@DefaultID
为null,它也不会进入if条件,这将非常有帮助,我必须遵循不同的方法将值分配给
@DefaultID
,才能进行空值检查

先谢谢你

DECLARE @DefaultID varchar(25)
DECLARE @ISDefault varchar(1)

SELECT @DefaultID = (SELECT TABLE1.DEFID as DEFID
                     FROM TABLE1
                     WHERE TABLE1.ID = '123')

IF (@DefaultID = '')
    SET @ISDefault = '1'
ELSE
    SET @ISDefault = '0'
请检查使用情况

如果为空(@DefaultID=”)=''
而不是
IF(@DefaultID='')

我猜您正在使用MS Sql server。

使用

IF @DefaultID IS NULL
如果@DefaultID=''而不是

NULL
'
是两个不同的东西。

只需使用以下内容:-

  IF(@DefaultID is NULL)
根据您使用的数据库系统,空字符串
'
NULL
是不等价的!检查
=''
不会检查SQL Server中的
NULL
。将(=,,=)NULL与任何内容进行比较总是返回未知的特殊值,该值始终为false。正如下面一些答案中所述,您应该使用IS NULL。
IF(len(@DefaultID) > 0)
 SET @ISDefault = '1'
ELSE
    SET @ISDefault = '0'