In diesem Artikel werden zwei Möglichkeiten zum Auswählen von Zeilen basierend auf einer Liste von IDs (oder anderen Werten) in SQL Server vorgestellt. Dies kann in Szenarien nützlich sein, in denen Sie eine durch Kommas getrennte Liste von IDs haben und Ihre Datenbank nach Zeilen abfragen möchten, die mit diesen IDs übereinstimmen.
Angenommen, Sie haben die folgende Liste von IDs:
1,4,6,8
Sie möchten nun also eine Tabelle nach Datensätzen abfragen, die einen dieser Werte (d. h. entweder 1, 4, 6 oder 8) in ihrer ID-Spalte haben.
Hier sind zwei Möglichkeiten, dies zu tun.
Option 1:Der IN-Operator
Eine Möglichkeit ist die Verwendung des IN
-Operator in Ihrer Abfrage, um nur die Zeilen zurückzugeben, die in der Liste angegeben sind.
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistId IN (1,4,6,8);
Ergebnisse:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Wie Sie sehen können, sind die Werte in ArtistId
Spalte mit denen unserer Liste übereinstimmen.
Option 2:Die STRING_SPLIT()-Funktion
Beginnend mit SQL Server 2016, der STRING_SPLIT()
-Funktion kann verwendet werden, um einen Zeichenausdruck mit einem angegebenen Trennzeichen aufzuteilen. Mit anderen Worten, Sie können damit eine durch Kommas getrennte Liste aufteilen.
Hier ist ein Beispiel mit denselben Daten wie im vorherigen Beispiel:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1,4,6,8', ',') ON value = ArtistId;
Ergebnis:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Ein Vorteil von STRING_SPLIT()
ist, dass es Ihnen erlaubt/(erfordert) anzugeben, was als Trennzeichen für die Liste verwendet wird. Dies kann praktisch sein, wenn Ihre Liste ein anderes Zeichen als Trennzeichen verwendet.
Hier ist das gleiche Beispiel, aber für eine durch Leerzeichen getrennte Liste:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1 4 6 8', ' ') ON value = ArtistId;
Ergebnis:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Kompatibilitätsstufe
Beachten Sie, dass STRING_SPLIT()
ist nur für Datenbanken mit einem Kompatibilitätsgrad von 130 oder höher verfügbar. Sie können den Kompatibilitätsgrad einer Datenbank mit der folgenden Anweisung ändern:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 130;
Oder um es auf das Niveau von SQL Server 2017 zu bringen:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 140;
Wo MyDatabase
ist der Name der Datenbank.
Siehe auch So überprüfen Sie den Kompatibilitätsgrad einer Datenbank in SQL Server.