=(等于)(Transact-SQL)
比较 SQL Server 2012 中两个表达式的等价性(比较运算符)。
语法
expression = expression
参数
结果类型
Boolean
注释
比较两个 NULL 表达式时,结果将取决于 ANSI_NULLS 设置:
如果 ANSI_NULLS 设置为 ON,则根据 ANSI 有关一个 NULL(或未知)值与另一个 NULL 或未知值不相等的约定,结果为 NULL。
如果 ANSI_NULLS 设置为 OFF,则 NULL 与 NULL 的比较结果为 TRUE。
将 NULL 与非 NULL 值比较,结果始终为 FALSE。 有关详细信息,请参阅 SET ANSI_NULLS (Transact-SQL)。
示例
A.在简单查询中使用 =
下面的示例使用“等于”运算符返回 HumanResources.Department 表中的所有行,在该表中,GroupName 列中的值等于字词“Manufacturing”。
USE AdventureWorks2012;
GO
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';
下面是结果集:
DepartmentID Name
------------ --------------------------------------------------
7 Production
8 Production Control
(2 row(s) affected)
B.比较 NULL 值和非 NULL 值
以下示例使用等于 (=) 和不等于 (<>) 比较运算符对表中的 NULL 值和非空值进行比较。 该示例还表明,IS NULL 不受 SET ANSI_NULLS 设置的影响。
-- Create table t1 and insert 3 rows.
CREATE TABLE dbo.t1 (a INT NULL);
INSERT INTO dbo.t1 VALUES (NULL),(0),(1);
GO
-- Print message and perform SELECT statements.
PRINT 'Testing default setting';
DECLARE @varname int;
SET @varname = NULL;
SELECT a
FROM t1
WHERE a = @varname;
SELECT a
FROM t1
WHERE a <> @varname;
SELECT a
FROM t1
WHERE a IS NULL;
GO
-- SET ANSI_NULLS to ON and test.
PRINT 'Testing ANSI_NULLS ON';
SET ANSI_NULLS ON;
GO
DECLARE @varname int;
SET @varname = NULL
SELECT a
FROM t1
WHERE a = @varname;
SELECT a
FROM t1
WHERE a <> @varname;
SELECT a
FROM t1
WHERE a IS NULL;
GO
-- SET ANSI_NULLS to OFF and test.
PRINT 'Testing SET ANSI_NULLS OFF';
SET ANSI_NULLS OFF;
GO
DECLARE @varname int;
SET @varname = NULL;
SELECT a
FROM t1
WHERE a = @varname;
SELECT a
FROM t1
WHERE a <> @varname;
SELECT a
FROM t1
WHERE a IS NULL;
GO
-- Drop table t1.
DROP TABLE dbo.t1;
下面是结果集:
Testing default setting
a
-----------
NULL
(1 row(s) affected)
a
-----------
0
1
(2 row(s) affected)
a
-----------
NULL
(1 row(s) affected)
Testing ANSI_NULLS ON
a
-----------
(0 row(s) affected)
a
-----------
(0 row(s) affected)
a
-----------
NULL
(1 row(s) affected)
Testing SET ANSI_NULLS OFF
a
-----------
NULL
(1 row(s) affected)
a
-----------
0
1
(2 row(s) affected)
a
-----------
NULL
(1 row(s) affected)