= (等於) (Transact-SQL)
比較 SQL Server 2014 中兩個運算式是否相等 (比較運算子)。
適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。 |
語法
expression = expression
引數
結果類型
Boolean
備註
當您比較兩個 NULL 運算式時,結果會隨著 ANSI_NULLS 設定而不同:
如果 ANSI_NULLS 設為 ON,結果是 NULL,依照 ANSI 慣例,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 和非 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)