= (等於) (Transact-SQL)
適用於:MICROSOFT網狀架構倉儲中的 SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點,Microsoft Fabric SQL 資料庫中的網狀架構倉儲Microsoft網狀架構
比較 SQL Server 中兩個運算式是否相等 (比較運算子)。
語法
expression = expression
引數
expression
這是任何有效的運算式。 如果運算式的資料類型不同,一個運算式的資料類型必須能夠隱含地轉換成另一運算式的資料類型。 轉換會以資料類型優先順序的規則為基礎。
結果類型
布林值
備註
當您使用 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)。
範例
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)