Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
Retourneert afzonderlijke rijen door de resultaten van twee query's te vergelijken.
BEHALVE retourneert afzonderlijke rijen uit de linkerinvoerquery die niet worden uitgevoerd door de juiste invoerquery.
INTERSECT retourneert afzonderlijke rijen die worden uitgevoerd door zowel de operator voor linker- als rechterinvoerquery's.
Als u de resultatensets wilt combineren van twee query's die GEBRUIKMAKEN van BEHALVE of INTERSECT, zijn de basisregels:
- Het getal en de volgorde van de kolommen moeten in alle query's hetzelfde zijn. 
- De gegevenstypen moeten compatibel zijn. 
              
              
              Transact-SQL syntaxis-conventies
Syntax
{ <query_specification> | ( <query_expression> ) }   
{ EXCEPT | INTERSECT }  
{ <query_specification> | ( <query_expression> ) }  
Arguments
              <
              
              
              > query_specification | ( <query_expression> )
Is een queryspecificatie of query-expressie die gegevens retourneert die moeten worden vergeleken met de gegevens uit een andere queryspecificatie of query-expressie. De definities van de kolommen die deel uitmaken van een BEWERKING EXCEPT of INTERSECT hoeven niet hetzelfde te zijn. Maar ze moeten vergelijkbaar zijn via impliciete conversie. Wanneer gegevenstypen verschillen, bepalen de regels voor prioriteit van het gegevenstype het gegevenstype dat wordt uitgevoerd ter vergelijking.
Het resultaat is gebaseerd op dezelfde regels voor het combineren van expressies wanneer de typen hetzelfde zijn, maar verschillen in precisie, schaal of lengte. Zie Precisie, Schaal en Lengte (Transact-SQL) voor meer informatie.
De queryspecificatie of -expressie kan geen xml-, tekst-, ntekst-, afbeeldings- of niet-door de gebruiker gedefinieerde CLR-kolommen retourneren, omdat deze gegevenstypen niet vergelijkbaar zijn.
EXCEPT
Retourneert afzonderlijke waarden uit de query links van de operator EXCEPT. Deze waarden retourneren zolang de juiste query deze waarden niet retourneert.
INTERSECT
Retourneert afzonderlijke waarden die worden geretourneerd door zowel de query aan de linkerkant als de rechterzijde van de INTERSECT-operator.
Remarks
De gegevenstypen van vergelijkbare kolommen worden geretourneerd door de query's links en rechts van de operators EXCEPT of INTERSECT. Deze gegevenstypen kunnen bestaan uit tekengegevenstypen met verschillende sorteringen. Wanneer dit gebeurt, wordt de vereiste vergelijking uitgevoerd volgens de regels van sorteringsprioriteit. Als u deze conversie niet kunt uitvoeren, retourneert de SQL Server Database Engine een fout.
Bij het vergelijken van kolomwaarden voor het bepalen van DISTINCT-rijen worden twee NULL-waarden als gelijk beschouwd.
BEHALVE en INTERSECT retourneren de kolomnamen van de resultatenset die hetzelfde zijn als de kolomnamen die de query aan de linkerkant van de operator retourneert.
Kolomnamen of aliassen in ORDER BY-componenten moeten verwijzen naar kolomnamen die worden geretourneerd door de query aan de linkerkant.
De null-waarde van een kolom in de resultatenset die wordt geretourneerd door EXCEPT of INTERSECT, is hetzelfde als de null-waarde van de corresponderende kolom die wordt geretourneerd door de query aan de linkerkant van de operator.
Als EXCEPT of INTERSECT samen met andere operators in een expressie wordt gebruikt, wordt deze geƫvalueerd in de context van de volgende prioriteit:
- Expressies tussen haakjes 
- De INTERSECT-operator 
- EXCEPT en UNION geƫvalueerd van links naar rechts op basis van hun positie in de expressie 
U kunt EXCEPT of INTERSECT gebruiken om meer dan twee sets query's te vergelijken. Wanneer u dit doet, wordt de conversie van gegevenstypen bepaald door twee query's tegelijk te vergelijken en de eerder genoemde regels voor expressie-evaluatie te volgen.
BEHALVE en INTERSECT kunnen niet worden gebruikt in gedistribueerde gepartitioneerde weergavedefinities, querymeldingen.
BEHALVE en INTERSECT kunnen worden gebruikt in gedistribueerde query's, maar worden alleen uitgevoerd op de lokale server en niet naar de gekoppelde server gepusht. Als zodanig kan het gebruik van EXCEPT en INTERSECT in gedistribueerde query's van invloed zijn op de prestaties.
U kunt snel voorwaartse en statische cursors gebruiken in de resultatenset wanneer ze worden gebruikt met een EXCEPT- of INTERSECT-bewerking. U kunt ook een sleutelsetgestuurde of dynamische cursor gebruiken in combinatie met een BEWERKING BEHALVE of INTERSECT. Wanneer u dit doet, wordt de cursor van de bewerkingsresultatenset geconverteerd naar een statische cursor.
Wanneer een EXCEPT-bewerking wordt weergegeven met behulp van de grafische showplan-functie in SQL Server Management Studio, wordt de bewerking weergegeven als een linker anti-semi-join en wordt een INTERSECT-bewerking weergegeven als een linker semi-join.
Examples
In de volgende voorbeelden ziet u het gebruik van de INTERSECT en EXCEPT operators. De eerste query retourneert alle waarden uit de Production.Product tabel om de resultaten te vergelijken met INTERSECT en EXCEPT.
-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.Product ;  
--Result: 504 Rows  
De volgende query retourneert afzonderlijke waarden die worden geretourneerd door zowel de query aan de linkerkant als de rechterkant van de INTERSECT operator.
-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.Product  
INTERSECT  
SELECT ProductID   
FROM Production.WorkOrder ;  
--Result: 238 Rows (products that have work orders)  
De volgende query retourneert afzonderlijke waarden uit de query links van de EXCEPT operator die niet ook in de rechterquery worden gevonden.
-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.Product  
EXCEPT  
SELECT ProductID   
FROM Production.WorkOrder ;  
--Result: 266 Rows (products without work orders)  
De volgende query retourneert afzonderlijke waarden uit de query links van de EXCEPT operator die niet ook in de rechterquery worden gevonden. De tabellen worden omgekeerd uit het vorige voorbeeld.
-- Uses AdventureWorks  
  
SELECT ProductID   
FROM Production.WorkOrder  
EXCEPT  
SELECT ProductID   
FROM Production.Product ;  
--Result: 0 Rows (work orders without products)  
Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)
In de volgende voorbeelden ziet u hoe u de INTERSECT en EXCEPT operators gebruikt. De eerste query retourneert alle waarden uit de FactInternetSales tabel om de resultaten te vergelijken met INTERSECT en EXCEPT.
-- Uses AdventureWorks  
  
SELECT CustomerKey   
FROM FactInternetSales;  
--Result: 60398 Rows  
De volgende query retourneert afzonderlijke waarden die worden geretourneerd door zowel de query aan de linkerkant als de rechterkant van de INTERSECT operator.
-- Uses AdventureWorks  
  
SELECT CustomerKey   
FROM FactInternetSales    
INTERSECT   
SELECT CustomerKey   
FROM DimCustomer   
WHERE DimCustomer.Gender = 'F'  
ORDER BY CustomerKey;  
--Result: 9133 Rows (Sales to customers that are female.)  
De volgende query retourneert afzonderlijke waarden uit de query links van de EXCEPT operator die niet ook in de rechterquery worden gevonden.
-- Uses AdventureWorks  
  
SELECT CustomerKey   
FROM FactInternetSales    
EXCEPT   
SELECT CustomerKey   
FROM DimCustomer   
WHERE DimCustomer.Gender = 'F'  
ORDER BY CustomerKey;  
--Result: 9351 Rows (Sales to customers that are not female.)