Neue Operatoren EXCEPT und INTERSECT in 2K5

SQL Server 2005 bieten zwei neue Operatoren, nämlich EXCEPT und INTERSECT an:

Syntax:

( <query_expression> )  { EXCEPT | INTERSECT }  ( <query_expression> ) 
EXCEPT liefert alle eindeutigen  Werte der Abfrage links des Operators,
die nicht von der rechts davon stehenden Abfrage zurückgeliefert werden.
 
Beispiel:
SELECT * FROM TableA EXCEPT SELECT * FROM TableB
TableA (col1 int)
TableB (col1 int)
NULL
NULL
NULL
1
NULL
3
1
4
2
4
2
 
2
 
3
 
4
 
4
 
 
Ergebnis:

Col1      

———–
2
(1 row(s) affected)

INTERSECT  dagegen liefert alle eindeutigen Werte die von beiden Abfragen,

links und rechts des Operators, zurückgeliefert werden.
 
Beispiel:

SELECT * FROM TableA INTERSECT SELECT * FROM TableB

Ergebnis:

 Col1      

———–
NULL
1
3
4
 
Achtung: Beim Vergleich der Werte, werden zwei NULL Werte als gleichwertig
betrachtet. Desweiteren werden, wenn die Abfragen aus mehr als einer Spalte bestehen,
alle Spalten in den Vergleich mit einbezogen.
 

Voraussetzung für beide Operatoren:

  1. Die Anzahl und Reihenfolge der Spalten muß in beiden Abfragen identisch sein
  2. Alle Datentypen müssen kompatibel sein

 

Advertisements