In dit artikel worden twee manieren gepresenteerd om rijen te selecteren op basis van een lijst met id's (of andere waarden) in SQL Server. Dit kan handig zijn in scenario's waarin u een door komma's gescheiden lijst met ID's heeft en u in uw database wilt zoeken naar rijen die overeenkomen met die ID's.
Stel dat u de volgende lijst met ID's heeft:
1,4,6,8
En dus wilt u nu een tabel opvragen voor records die een van die waarden hebben (d.w.z. 1, 4, 6 of 8) in de ID-kolom.
Hier zijn twee manieren om dat te doen.
Optie 1:De IN-operator
Een optie is om de IN
. te gebruiken operator binnen uw zoekopdracht om alleen die rijen te retourneren die in de lijst zijn opgegeven.
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistId IN (1,4,6,8);
Resultaten:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Zoals u kunt zien, zijn de waarden in de ArtistId
kolom overeenkomen met die in de lijst.
Optie 2:De STRING_SPLIT() Functie
Vanaf SQL Server 2016, de STRING_SPLIT()
functie kan worden gebruikt om een tekenuitdrukking te splitsen met een opgegeven scheidingsteken. Met andere woorden, u kunt het gebruiken om een door komma's gescheiden lijst te splitsen.
Hier is een voorbeeld met dezelfde gegevens als in het vorige voorbeeld:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1,4,6,8', ',') ON value = ArtistId;
Resultaat:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Een voordeel van STRING_SPLIT()
is dat het u toestaat/(vereist) om te specificeren wat wordt gebruikt als scheidingsteken voor de lijst. Dit kan handig zijn als uw lijst een ander teken als scheidingsteken gebruikt.
Hier is hetzelfde voorbeeld, maar voor een door spaties gescheiden lijst:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1 4 6 8', ' ') ON value = ArtistId;
Resultaat:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Compatibiliteitsniveau
Merk op dat STRING_SPLIT()
is alleen beschikbaar op databases met een compatibiliteitsniveau van 130 of hoger. U kunt het compatibiliteitsniveau van een database wijzigen met de volgende instructie:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 130;
Of om het op SQL Server 2017-niveau te brengen:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 140;
Waar MyDatabase
is de naam van de database.
Zie ook Hoe u het compatibiliteitsniveau van een database in SQL Server kunt controleren.