次の方法で共有


= (等しい) (Transact-SQL)

SQL Server 2014 で 2 つの式の等価性を比較します (比較演算子)。

適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで)

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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)

関連項目

参照

データ型 (Transact-SQL)

式 (Transact-SQL)

演算子 (Transact-SQL)