Freigeben über


= (Gleich) (Transact-SQL)

Vergleicht die Gleichwertigkeit von zwei Ausdrücken (einem Vergleichsoperator) in SQL Server 2012.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

expression = expression

Argumente

  • expression
    Ein beliebiger gültiger Ausdruck. Falls die Ausdrücke nicht vom selben Datentyp sind, muss der Datentyp für einen Ausdruck implizit in den Datentyp des anderen konvertierbar sein. Die Konvertierung folgt den Rangfolgeregeln der Datentypen.

Ergebnistypen

Boolean

Hinweise

Beim Vergleich von zwei NULL-Ausdrücken hängt das Ergebnis von der ANSI_NULLS-Einstellung ab:

  • Ist ANSI_NULLS auf ON festgelegt, ist das Ergebnis NULL gemäß der ANSI-Konvention, dass ein NULL- (oder unbekannter) Wert nicht gleich einem anderen NULL- oder unbekannten Wert ist.

  • Ist ANSI_NULLS auf OFF festgelegt, ergibt der Vergleich von NULL mit NULL den Wert TRUE.

Der Vergleich eines NULL-Wertes mit einem Wert ungleich NULL ergibt immer FALSE. Weitere Informationen finden Sie unter SET ANSI_NULLS (Transact-SQL).

Beispiele

A.Verwenden des Gleichheitszeichens (") in einer einfachen Abfrage

Im folgenden Beispiel wird der Gleich-Operator verwendet, um alle Zeilen in der HumanResources.Department-Tabelle zurückzugeben, in denen der Wert der GroupName-Spalte gleich dem Wort "Manufacturing" ist.

USE AdventureWorks2012;
GO
SELECT DepartmentID, Name
FROM HumanResources.Department
WHERE GroupName = 'Manufacturing';

Dies ist das Resultset.

DepartmentID Name
------------ --------------------------------------------------
7            Production
8            Production Control

(2 row(s) affected)

B.Vergleichen von NULL- und Nicht-NULL-Werten

Im folgenden Beispiel werden mithilfe der Vergleichsoperatoren Gleich (=) und Ungleich (<>) Vergleiche mit NULL-Werten und mit Werten ungleich NULL in einer Tabelle ausgeführt. Das Beispiel zeigt auch, dass IS NULL durch die SET ANSI_NULLS-Einstellung nicht beeinflusst wird.

-- 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;

Dies ist das Resultset.

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)

Siehe auch

Verweis

Datentypen (Transact-SQL)

Ausdrücke (Transact-SQL)

Operatoren (Transact-SQL)