Categories: Workspace

Data-Mining-Tipps für die SQL-Befehlszeile

Sie können Wildcards in Ihren WHERE-Clauses einsetzen, um Abfragen zu erzeugen, die Ihnen auf ungenaue (nicht 100%-ige) Text-Matches basierende Einträge liefern. Ich werde auch zwei Schlüsselworte oder Keywords betrachten, die Ihnen dabei helfen können, Ihre Tabellen mit „Power Searches“ zu durchsuchen.

Der Wildcard-Faktor
In einem früheren Artikel („Fine-tune WHERE clauses in SQL“) habe ich erklärt, wie man Einträge lokalisieren kann, in denen zumindest eine Spalte einen Wert enthält, der gegenüber einem anderen Wert größer, kleiner oder gleich ist. Beim Schreiben dieser WHERE-Clauses verwendete ich die Operatoren =, >, = und

Neben diesen mathematischen Operatoren unterstützen die meisten SQL-Implementierungen zwei Wildcards, das Prozentzeichen und den Unterstrich (% und _). Das Prozentzeichen ist ein besonderes Zeichen in der SQL-Syntax, es ist eine Wildcard, die für eine beliebige Anzahl von Zeichen stehen kann. Der Unterstrich repräsentiert als Wildcard ein einzelnes Zeichen.

Verwendet man diese Wildcards gemeinsam mit dem Keyword LIKE, kann man ungenaue (fuzzy) Abfragen der Einträge einer Datenbank durchführen. Tabelle A zeigt die in SQL möglichen Wildcards. Zum Vergleich führe ich auch die entsprechenden DOS-Wildcards auf.

Steht für ein einzelnes Zeichen Steht für eine beliebige Zeichenkette
SQL _ %
DOS ? *

Tabelle A: Mit SQL-Wildcards kann man die Suche nach Einträgen in einer Datenbank genauso individuell gestalten, wie dies mit DOS-Wildcards bei der Suche nach Dateien möglich ist.

Innerhalb einer WHERE-Clause löst das Keyword LIKE eine ungenaue (fuzzy) Suche aus. Nehmen wir zum besseren Verständnis an, Sie sollen alle Kundeneinträge überprüfen, deren Nachname mit einem P beginnt. Geht man davon aus, dass die Tabelle einen Feldnamen Lname für die Nachnamen enthält, dann würde Ihr SELECT-Statement in etwa so aussehen:

SELECT * FROM Customer WHERE 
Lname LIKE P%

Diese Abfrage liefert nur Einträge für Kunden, deren Nachnamen mit dem Buchstaben P beginnen.

Diese Wildcard ist auch praktisch, wenn man sich über die Schreibweise des Namens eines Kunden nicht sicher ist. Wenn Sie glauben, dass sich der gesuchte Name sowohl Spaulding als auch Spalding schreiben könnte, können Sie einen Befehl in dieser Form ausführen:

SELECT * FROM Customer WHERE 
Lname LIKE Spa%

Dieser Befehl sucht Einträge mit den Nachnamen Spaulding, Spalding, Spanning und alle anderen Nachnamen, die mit den Buchstaben Spa beginnen.

Manchmal ist nur ein Zeichen die einzige Variable in einer Zeichenkette. In diesen Fällen kann man den Unterstrich (_), SQLs zweites Wildcard-Zeichen, benutzen. Der Befehl

SELECT * FROM Customer WHERE 
Lname LIKE L_

zeigt zum Beispiel Einträge an, die im Feld Lname Namen wie La, Le, Li, Lo, Lu und Ly enthalten.

Anpassung der Anfrage mit dem Keyword IN
Das Keyword IN bietet ein weiteres hervorragendes Werkzeug zum Data-Mining. Um seine Verwendung zu verstehen, betrachten Sie die mathematischen Operatoren =, > und

Das Keyword IN findet Einträge nicht auf der Grundlage einfacher Vergleiche von Werten, sondern ermöglicht dem Anwender die Spezifizierung einer Liste von Werten, die SQL zur Abfrage der Tabelle verwenden soll. Nehmen wir zum Beispiel an, Sie werden gebeten, eine Liste aller Einträge für Kunden zu erstellen, die in den folgenden Postleitzahlbereichen leben: 48012, 49014, und 49088.

Auf der Grundlage dessen, was Sie in SQL 101 gelernt haben, könnten Sie einen solchen SELECT-Befehl schreiben:

SELECT * FROM Customer WHERE Zip="48012" 
OR Zip="49014" OR Zip="49088"

Allerdings benötigt dieser Befehl 70 Zeichen (einschließlich der Leerzeichen). Möchte man nun dieser Liste weitere Postleitzahlen hinzufügen, muss man noch mehr OR-Clauses anfügen. Um Schreibarbeit zu sparen, können Sie das Keyword IN verwenden, um den gleichen Befehl mit nur 61 Zeichen auszudrücken:

SELECT * FROM Customer WHERE Zip IN 
("48012","49014","49088")

Um nun dieser individuellen Abfrage weitere Postleitzahlen hinzuzufügen, braucht man diese nur in die Optionenliste innerhalb der Klammer zu schreiben. Übrigens, wir verwendeten die Anführungszeichen zur Begrenzung der Postleitzahlen, denn sie sind in unserer Tabelle in Text- bzw. Zeichenfeldern gespeichert. Verwenden Sie das Keyword IN, um Werte aus einem numerischen Feld aufzulisten, können Sie diese Werte ohne die Anführungszeichen eingeben.

Lassen Sie BETWEEN für sich rechnen
Das Keyword BETWEEN arbeitet auf eine sehr ähnliche Wiese wie IN. Bei der Suche nach Einträgen, deren Werte in einem bestimmten Bereich liegen, kann man mit Hilfe des Keywords BETWEEN Schreibarbeit sparen. Wollen Sie zum Beispiel Einträge lokalisieren wollen, deren Werte im Feld Current_balance zwischen 1000 und einschließlich 2000 liegen, können Sie ein Statement in dieser Form verwenden:

SELECT * FROM Customer WHERE 
Current_balance>=1000 AND
Current_balance

Dieses Statement erfordert allerdings 79 Anschläge. Mit dem Keyword BETWEEN würde das Statement folgendermaßen aussehen:

SELECT * FROM Customer WHERE 
Current_balance BETWEEN (1000,2000)

ZDNet.de Redaktion

Recent Posts

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

14 Stunden ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

18 Stunden ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

18 Stunden ago

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

19 Stunden ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

19 Stunden ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

21 Stunden ago