= (Gleich) (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

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

Transact-SQL-Syntaxkonventionen

Syntax

expression = expression  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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 basiert auf der Rangfolge der Datentypen.

Ergebnistypen

Boolean

Hinweise

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

  • Wenn ANSI_NULLS auf ON festgelegt ist, ist UNKNOWN das Ergebnis von Vergleichen mit NULL. Dies folgt der ANSI-Konvention, dass NULL ein unbekannter Wert ist und nicht mit anderen Werten verglichen werden kann, auch nicht mit anderen NULL-Werten.

  • Wenn ANSI_NULLS auf OFF festgelegt ist, ist TRUE das Ergebnis eines Vergleichs von NULL mit NULL, und das Ergebnis eines Vergleichs von NULL mit jedem anderen Wert ist FALSE.

Weitere Informationen finden Sie unter SET ANSI_NULLS (Transact-SQL).

Ein boolescher Ausdruck, der zu UNKNOWN führt, verhält sich in den meisten, aber nicht in allen Fällen wie FALSE. Weitere Informationen finden Sie unter NULL und UNKNOWN (Transact-SQL) und unter NOT (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.

-- Uses AdventureWorks  
  
SELECT DepartmentID, Name  
FROM HumanResources.Department  
WHERE GroupName = 'Manufacturing';  

Hier 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 ebenfalls, 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;  

Hier 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)  
  

Weitere Informationen

Datentypen (Transact-SQL)
Ausdrücke (Transact-SQL)
Operatoren (Transact-SQL)