= (Gleich) (Transact-SQL)
Vergleicht die Gleichwertigkeit von zwei Ausdrücken (einem Vergleichsoperator) in SQL Server 2014.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
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)