Where子句有时会过滤NULL值,但有时不会

时间:2012-05-10 18:49:34

标签: sql-server-2008 null where-clause

有人可以解释一下为什么我对这两个类似的查询有两个不同的结果吗?

示例:

-- Create table t1 and insert values.
CREATE TABLE t1 (a NVARCHAR(4) NULL)
INSERT INTO t1 values (NULL)
INSERT INTO t1 values ('0')
INSERT INTO t1 values ('1')
GO

PRINT 'Testing NULL values'
DECLARE @varname NVARCHAR(4)
SET @varname = '1'

SELECT * 
FROM t1 
WHERE a <> @varname

SELECT * 
FROM t1 
WHERE a <> '1'
GO

-- Drop table t1.
DROP TABLE t1

谢谢!

1 个答案:

答案 0 :(得分:0)

如果使用set ansi nulls off,则会得到不同的结果,如果启用了ansi nulls。