Sql server 数值空值vs值--比较
我试着比较2个值-1为空,另一个为数字,但不知何故它等于“相等”Sql server 数值空值vs值--比较,sql-server,Sql Server,我试着比较2个值-1为空,另一个为数字,但不知何故它等于“相等” declare@value1 int; 声明@value2 int; 选择@value1=null 选择@value2=1 如果(@value1@value2) 打印“不相等” 其他的 打印“相等” 结果:如果(NULL@value)为false,则EqualNULL会导致所有比较失败 启用“设置ANSI_NULLS”时,所有与null值的比较结果均为未知 NULL使所有比较失败,因此如果(NULL@value)为false
declare@value1 int;
声明@value2 int;
选择@value1=null
选择@value2=1
如果(@value1@value2)
打印“不相等”
其他的
打印“相等”
结果:如果(NULL@value)为false,则Equal
NULL
会导致所有比较失败
启用“设置ANSI_NULLS”时,所有与null值的比较结果均为未知
NULL
使所有比较失败,因此如果(NULL@value)
为false
启用“设置ANSI_NULLS”时,所有与null值的比较结果均为未知
不能将
NULL
值与=
或
进行比较,因为NULL
表示未定义
使用IS
如果您想知道某个值是否为NULL
,可以使用:
IF ( ( @value1 IS NULL
AND @value2 IS NULL )
OR (( @value1 IS NOT NULL
AND @value2 IS NOT NULL
AND @value1 = @value2 )) )
PRINT 'equal'
ELSE
PRINT 'not equal'
请参阅:您不能比较
NULL
值,既不能与=
也不能与
进行比较,因为NULL
表示未定义
使用IS
如果您想知道某个值是否为NULL
,可以使用:
IF ( ( @value1 IS NULL
AND @value2 IS NULL )
OR (( @value1 IS NOT NULL
AND @value2 IS NOT NULL
AND @value1 = @value2 )) )
PRINT 'equal'
ELSE
PRINT 'not equal'
见: