EXCEPT and INTERSECT (Transact-SQL)
Pełna nazwa lokalnego procedura przechowywana tymczasowo, #, tym nie może przekraczać 116 znaków.
Jest liczbą całkowitą opcjonalny, który jest używany do grupowania procedury o takiej samej nazwie.
Procedury te zgrupowane może być odrzucone, razem korzystając z jednej instrukcja DROP PROCEDURE.
Podstawowe reguły łączenia zestawów wyników dwóch kwerend, w których użyto opcji EXCEPT lub INTERSECT są następujące:
Liczba i porządek kolumn muszą być takie same we wszystkich kwerendach.
Typy danych muszą być zgodne.
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
Argumenty
<query_specification> | ( <query_expression> )
Jest to specyfikacja kwerendy lub wyrażenie kwerendy zwracające dane do porównania z danymi innej specyfikacji kwerendy lub wyrażenia kwerendy.Definicje kolumn, które są częścią operacji EXCEPT lub INTERSECT nie muszą być takie same, ale muszą być porównywalne przez niejawną konwersję.Jeśli typy danych są różne, to typ używany do wykonania porównania i zwrócenia wyników jest wyznaczany na podstawie reguł pierwszeństwa typu danych.To parametr w procedurze.Aby uzyskać więcej informacji zobaczPrecyzja, skala i długość (języka Transact-SQL).
Specyfikacja kwerendy lub wyrażenie nie może zwrócić xml, text, ntext, image, lub CLR nonbinary użytkownika wpisz kolumn, ponieważ te typy danych nie są porównywalne.
Z WYJĄTKIEM
Wartość każdego parametru zadeklarowanej musi być podany przez użytkownika procedura zostanie wywołana, o ile nie zdefiniowano domyślnego dla parametru lub ma wartość równa inny parametr.CZĘŚĆ WSPÓLNA
Procedura przechowywana może składać się maksymalnie z 2,100 parametrów.
Remarks
Jeśli typy danych porównywanych kolumn zwracanych przez kwerendy po lewej i po prawej stronie argumentów operacji EXCEPT lub INTERSECT są typami danych znakowych o różnych sortowaniach, żądane porównanie jest wykonywane zgodnie z regułami pierwszeństwa sortowania.Jeśli nie można wykonać konwersji, program SQL Server Database Engine zwraca błąd.
Przy porównywaniu wierszy w celu wyznaczenia różnych wartości dwie wartości NULL są uważane za równe.
Parametry są lokalne do procedury, tej samej nazwy parametrów mogą być używane w innych procedur.
Domyślnie parametrów może mieć miejsce stałych wyrażeń, nie można ich używać zamiast nazwy tabela, nazwy kolumn lub nazwy innych obiektów bazy danych.
Ustawienia dopuszczalności wartości null dowolnej kolumny w zestawie wyników zwracane przez operacje EXCEPT i INTERSECT są takie same jak ustawienia dopuszczalności wartości null odpowiedniej kolumny zwracanej przez kwerendę po lewej stronie argumentu operacji.
Jest to typ danych parametru i schematu, do której należy.
Wyrażenia w nawiasach
Argument operacji INTERSECT
Wartości w tabela parametrów może być określony jako parametry wejściowe tylko i muszą być one zaopatrzone w słowo kluczowe tylko do odczytu.
Jeśli operacja EXCEPT lub INTERSECT jest używana do porównania więcej niż dwóch zestawów zapytań, konwersja typu danych jest wyznaczana przez porównywanie kolejnych par kwerend i postępowanie zgodnie z wcześniej wspomnianymi regułami obliczania wyrażeń.
Operacji EXCEPT i INTERSECT nie można używać z definicjami rozproszonego widoku partycjonowanego, powiadomieniami kwerendy oraz w połączeniu z klauzulami COMPUTE i COMPUTE BY.
Operacje EXCEPT i INTERSECT mogą być używane w kwerendach rozproszonych, ale tylko w wykonywanych na serwerze lokalnym i nie przesuwanych na połączony serwer.Dlatego używanie operacji EXCEPT i INTERSECT w kwerendach rozproszonych może obniżać wydajność.
Kursory progresywne i statyczne są w pełni obsługiwane w zestawie wyników, jeśli zostaną użyte z operacją EXCEPT lub INTERSECT.Jeśli z operacją EXCEPT lub INTERSECT zostanie użyty kursor oparty na zestawie kluczy lub kursor dynamiczny, to kursor zestawu wyników operacji zostanie przekonwertowany na kursor statyczny.
Po wyświetleniu operacji EXCEPT przy użyciu funkcji graficznego plan wykonania w SQL Server Management Studio, operacja jest wyświetlana jako po lewej stronie anty łączyć naczepai operację PRZETNIJ jest wyświetlana jako naczepa lewego łączyć.
Przykłady
Poniższe przykłady pokazują, za pomocą INTERSECT i EXCEPT operandy. Pierwszy kwerenda zwraca wszystkie wartości z Production.Product Tabela do porównania z wyniki z INTERSECT i EXCEPT.
USE AdventureWorks;
GO
SELECT ProductID
FROM Production.Product ;
--Result: 504 Rows
Następująca kwerenda zwraca różnych wartości, które są zwracane przez kwerendy zarówno na lewej i prawej krawędzi INTERSECT Operand.
USE AdventureWorks;
GO
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 238 Rows (products that have work orders)
Następująca kwerenda zwraca różne wartości z kwerendy po lewej stronie EXCEPT Operand nie są także znaleźć w prawej kwerendy.
USE AdventureWorks;
GO
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;
--Result: 266 Rows (products without work orders)
Następująca kwerenda zwraca różne wartości z kwerendy po lewej stronie EXCEPT Operand nie są także znaleźć w prawej kwerendy. Ten parametr jest konstruowana dynamicznie w procedurze przechowywanej i jego zawartość mogą być różne.
USE AdventureWorks;
GO
SELECT ProductID
FROM Production.WorkOrder
EXCEPT
SELECT ProductID
FROM Production.Product ;
--Result: 0 Rows (work orders without products)