SQL IN Liste
SQL IN Statement (IN Listen) können lediglich 1000 Werte verarbeiten und überprüfen. Alles darüber liefert einen Fehler zurück. Nachfolgend ein Beispiel, um eine IN Liste zu demonstrieren. Hierbei werden nur Angestellte und Arbeiter ausgegeben, wobei die Nummer in einer Liste vorkommen muss.
SELECT *
FROM emp
WHERE 1=1
AND empNo IN (1, 2, ... <maximal 1000 Werte>);
Oftmals können solche Statements einfach vermieden werden. Denken wir an eine große Firma, welche alle Produktionsmitarbeiter ausgegeben möchte. Hier kann zum Beispiel auf die Tabelle „Abteilungen“ verwiesen werden und dort die Abteilung Produktion ausgewählt werden. Problematisch ist der Fall allerdings bei einem UPDATE oder DELETE Statement. Wie soll vorgegangen werden, wenn zum Beispiel viele (aber spezifische und nicht alle) upgedated werden müssen?
Multi Value IN Liste
Hierfür wird eine größere IN Liste benötigt. Sollte also ein Vergleich zwischen mehreren Werten stattfinden, so ist eine andere Funktion notwendig. SQL hat dafür eine neue Funktion, welche auch mit größeren Listen umgehen kann implementiert. Diese Funktion ist jünger und somit auch für einen größeren Vergleich implementiert.
Die neue Funktion funktioniert prinzipiell gleich wie die alte Funktion, nützt allerdings zwei oder mehr Parameter. Um die neue Funktion nützen zu können, müssen zwingend zwei oder mehr Parameter (Vergleichswerte) eingegeben werden. Nachfolgend ein einfaches Beispiel, welches weiterhin die Nummern aus der Liste vergleich. Hier wird zuerst der erste Vergleichswert (1 = 1?) und danach der zweite Vergleichswert (empNo = 1, 2, 3, …?) verglichen. In diesem Beispiel ist der erste Vergleichswert immer richtig, wodurch lediglich der zweite Vergleichswert betrachtet wird. Somit wurde die einfach IN Liste funktionsgleich in eine erweiterte IN Liste umschrieben.
SELECT *
FROM emp
WHERE 1=1
AND (1,empNo) IN ((1, 1), (1,2));
Hinweis: Oftmals wird auf die Anfangs- bzw. Endklammer der IN Liste vergessen.
Eine einfache In-Liste sowie eine In-Liste für den Vergleich von mehreren Werten kann leicht mit einem Makro mit Notepad++ implementiert werden. Hier werden die entsprechenden Daten von einer Datenbank oder Excel schnell in eine In-Liste umgewandelt. Diese kann anschließend in das SQL Skript kopiert werden.