適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
比較 SQL Server 中兩個運算式是否相等 (比較運算子)。
Syntax
expression = expression
Arguments
expression
這是任何有效的運算式。 如果運算式的資料類型不同,一個運算式的資料類型必須能夠隱含地轉換成另一運算式的資料類型。 轉換會以資料類型優先順序的規則為基礎。
結果類型
布林值
Remarks
當您使用 NULL 運算式進行比較時,結果會隨著 ANSI_NULLS 設定而不同:
如果
ANSI_NULLS設定為 ON,任何與 NULL 的比較結果為 UNKNOWN,其遵循 ANSI 慣例:NULL 是未知的值,而且無法與任何其他值 (包括其他的 NULL) 進行比較。如果
ANSI_NULLS設定為 OFF,比較 NULL 與 NULL 的結果為 TRUE,而比較 NULL 與任何其他值的結果為 FALSE。
如需詳細資訊,請參閱 SET ANSI_NULLS (Transact-SQL)。
在大部分情況下,導致 UNKNOWN 的布林運算式運作方式類似於 FALSE,但並非在所有的情況下都是如此。 如需詳細資訊,請參閱 NULL 和 UNKNOWN (Transact-SQL) and NOT (Transact-SQL)。
Examples
A. 在簡單的查詢中使用 =
下列範例會使用等於運算子傳回 HumanResources.Department 中,其 GroupName 資料行的值等於 'Manufacturing' 這個字的所有資料列。
-- Uses AdventureWorks
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)