我有以下情况:
declare @b datetime
declare @d datetime
set @b='2014-01-31 00:00:00.000'
set @d='2014-01-31 00:00:00.000'--NULL
IF @b <> @d
PRINT 'N'
ELSE
PRINT 'Y'
当@b和@d是有效值时,上述代码表现良好 但是当它们中的任何一个为空时,它无法进行比较 那么推荐的方法是什么,因为我在null不等式检查中也是null可能/可接受的情况?
我正在使用MSSQL2008
答案 0 :(得分:4)
您可以使用
IF EXISTS(SELECT @b EXCEPT SELECT @d)
PRINT 'N'
ELSE
PRINT 'Y'
答案 1 :(得分:0)
null
不是SQL中的值 - 缺少值。因此,当您将其与任何实际值进行比较时,retsult是未知的,不会评估为true
。
如果你想处理null
,你应该明确地这样做。 E.g:
IF (@B IS NULL AND @d IS NOT NULL) OR (@B IS NOT NULL AND @d IS NULL) OR (@b <> @d))
PRINT 'N'
ELSE
PRINT 'Y'
答案 2 :(得分:0)
您可以更改设置以满足您的要求:
SET ANSI_NULLS OFF
declare @b datetime
declare @d datetime
set @b='2014-01-31 00:00:00.000'
set @d='2014-01-31 00:00:00.000'--NULL
IF @b <> @d
PRINT 'N'
ELSE
PRINT 'Y'