Zurück zur Artikelliste Artikel
4 Leseminuten

Wie man einen SQL-Platzhalter verwendet

Mit SQL-Wildcards können wir Daten filtern, die bestimmten Mustern in SQL entsprechen. Wir verwenden SQL-Wildcards mit dem LIKE-Operator in der WHERE-Klausel einer Abfrage, um Daten zu filtern. In diesem Artikel für Einsteiger erfahren Sie alles, was Sie über die grundlegenden SQL-Wildcards wissen müssen.

Wenn Sie gerne Karten spielen, dann wissen Sie, dass Wildcards jede andere Karte in Ihrem Deck ersetzen können. In ähnlicher Weise können SQL-Wildcards ein oder mehrere Zeichen ersetzen.

Um mit unseren SQL-Wildcards zu beginnen, schauen wir uns eine einfache customers Tabelle für unsere Tierhandlung:

SQL-Wildcard mit dem LIKE-Operator

Stellen Sie sich vor, Sie werden Zeuge, wie ein Kunde eine Zoohandlung verlässt, ohne seine Bestellung zu bezahlen. So etwas kommt vor - er hat es einfach vergessen. Sie wissen, dass der Verkäufer in der Zoohandlung eine Kundendatenbank hat, und Sie fragen ihn, ob er den Namen des Kunden kennt, damit Sie die Adresse extrahieren und ihm nachgehen können. Der Verkäufer ist sich jedoch nicht sicher, ob er den Namen des Kunden kennt. Er weiß, dass der Name des Kunden mit zwei Buchstaben endet, osendet, und dass er kurz war, etwa drei Buchstaben. Vielleicht war es so etwas wie Tos, Los, Kos usw. Mit Hilfe eines SQL-Platzhalters können Sie einen zweideutigen Buchstaben in ihrer Datenbank behandeln. Um ein Zeichen darzustellen, verwenden wir den Unterstrich als SQL-Platzhalter. Unsere SELECT Abfrage sieht so aus:

SELECT * FROM customers WHERE surname LIKE ‘_os’;

Unsere Abfrage gibt nun alle Nachnamen zurück, und wir können uns das Schreiben der Anweisung für jede Wortkombination sparen:

SELECT * FROM customers WHERE surname IN (‘Kos’,’Tos’,’Los’);

Beachten Sie, dass die obige Liste der Nachnamen keineswegs vollständig ist, da der Unterstrich als Platzhalter jedes beliebige Zeichen ersetzt - auch ein Zeichen, das kein Buchstabe ist!

Vorsicht! Verwendung von SQL-Wildcards ohne LIKE-Operator

SQL-Wildcards funktionieren nur mit dem LIKE-Operator. Wenn Sie einen Platzhalter in eine gewöhnliche Zeichenfolge einfügen, die kein Argument für den LIKE-Operator ist, wird SQL diesen Platzhalter als ein in der Zeichenfolge vorkommendes Zeichen behandeln. Betrachten Sie zum Beispiel diese alternative Abfrage, bei der der LIKE-Operator nicht verwendet wird:

SELECT * FROM customers WHERE surname = ‘_os’;

Diese Abfrage würde alle Nachnamen suchen, die buchstäblich gleich "_os" sind, und Sie können darauf wetten, dass es keine solchen Datensätze in unserer Tabelle gibt. Dies ist ein typischer Anfängerfehler, seien Sie also vorsichtig bei der Verwendung von SQL-Platzhaltern.

Umkehrung von SQL-Wildcard-Filtern

Um die Umkehrung eines SQL-Platzhalterfilters zu erhalten, z. B. um alle Kunden zu finden, deren Nachnamen nicht Los, Tos, Kos usw. lauten, wenden Sie einfach eine Negation, NOT, auf den LIKE-Operator an:

SELECT * FROM customers WHERE surname NOT LIKE ‘_os’;

Verwendung von SQL-Wildcards zur Darstellung einer Sammlung von Zeichen

Der Unterstrich ist nicht der einzige Platzhalter, der in SQL zur Verfügung steht. Ein häufiger verwendeter SQL-Platzhalter ist das Prozentzeichen (%), das zur Darstellung eines oder mehrerer Zeichen verwendet wird. Wenn wir also alle Kunden auflisten möchten, die in deutschen Städten wohnen, die auf "burg" enden , würden wir die folgende Abfrage schreiben:

SELECT * FROM customers WHERE city LIKE ‘%burg’;

Diese Abfrage gibt alle Datensätze für Kunden zurück, deren Wohnort wie Hamburg, Augsburg, Oldenburg, Duisburg und andere lautet.

So wie wir den Unterstrich als SQL-Platzhalter negiert haben, können wir auch den Prozentwert als SQL-Platzhalter negieren. Wenn wir also Datensätze für Kunden extrahieren möchten, deren Wohnort nicht auf "burg" endet, würden wir schreiben:

SELECT * FROM customers WHERE city NOT LIKE ‘%burg’;

Hinweis: Vermeiden Sie nach Möglichkeit die Verwendung des prozentualen Platzhalters am Anfang einer Zeichenkette mit dem LIKE-Operator. Diese Konstruktion ist sehr kostspielig, da die Datenbank jede Kombination von Zeichenfolgen auswerten muss, die auf dieses Endungsmuster passen. Die Verwendung von % nach einigen Zeichen ist in Bezug auf die Computerressourcen weniger kostspielig, da die Datenbank bereits weiß, wie viele Zeichenketten sie auswerten muss.

Kombinieren von Platzhaltern in LIKE-Anweisungen

Es ist wichtig zu wissen, dass Sie SQL-Wildcards kombinieren können. Wenn Sie nach allen Kunden suchen möchten, deren Wohnort mit einem "W" beginnt, auf "burg" endet und mindestens einen Buchstaben zwischen dem "W" und "burg" hat, können Sie schreiben:

SELECT * FROM customers WHERE city NOT LIKE ‘W_%burg’;

Mit SQL-Wildcards in die Vollen gehen

In diesem Artikel haben wir uns angesehen, wie man SQL-Wildcards zum Filtern von Tabellen verwendet. Wir haben hier nur die Grundlagen behandelt. Um mehr über SQL-Wildcards zu erfahren, empfehle ich Ihnen, sich mit regulären Ausdrücken zu beschäftigen. Aber seien Sie vorsichtig, denn es gibt ein Sprichwort in der Computerwissenschaft: Wenn Sie versuchen, ein Problem mit regulären Ausdrücken zu lösen, werden Sie am Ende zwei Probleme haben. Reguläre Ausdrücke sind ein Thema für Fortgeschrittene, also sollten Sie einige Erfahrung haben, bevor Sie versuchen, sie zu beherrschen. Sehen Sie sich dies an Kleine Lektion von LearnSQL.de über Wildcards um mehr Erfahrung zu sammeln.