= (等しい) (Transact-SQL)
SQL Server 2012 で 2 つの式の等価性を比較します (比較演算子)。
構文
expression = expression
引数
- expression
有効な式を指定します。 2 つの式のデータ型が異なる場合、1 つの式のデータ型がもう一方の式のデータ型に暗黙的に変換可能である必要があります。 変換は、データ型の優先順位のルールに依存します。
戻り値の型
Boolean
説明
2 つの NULL 式を比較すると、結果は ANSI_NULLS の設定に応じて以下のように異なります。
ANSI_NULL が ON に設定されている場合、NULL (または不明) の値は別の NULL または不明の値と等しくないという ANSI 規則に従って、結果は NULL になります。
ANSI_NULL が 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)