共用方式為


= (等於) (Transact-SQL)

比較 SQL Server 2012 中兩個運算式是否相等 (比較運算子)。

主題連結圖示 Transact-SQL 語法慣例

語法

expression = 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)

請參閱

參考

資料類型 (Transact-SQL)

運算式 (Transact-SQL)

運算子 (Transact-SQL)