Wildcards
Abfragen verfeinern
Wildcards (Platzhalter) sind Sonderzeichen, die du zusammen mit LIKE verwendest, um Textmuster zu beschreiben. Sie machen die Mustersuche flexibel: Du musst nicht den exakten Wert kennen, sondern beschreibst nur die Form.
Die zwei Standard-Wildcards
%– beliebig viele Zeichen (auch keines).'B%'matcht „Berlin“, „Bonn“, „B“._– genau ein einzelnes Zeichen.'B_nn'matcht „Bonn“, aber nicht „Berlin“.
Beispiele
-- Städte mit genau 4 Buchstaben, beginnend mit K SELECT Stadt FROM Kunden WHERE Stadt LIKE 'K___'; -- Trifft: Köln (K + 3 Zeichen) -- Produktname enthält "öl" SELECT Produktname FROM Produkte WHERE Produktname LIKE '%öl%';
| Muster | Bedeutung | Trifft z. B. |
|---|---|---|
'a%' | beginnt mit a | apfel, abc |
'%a' | endet auf a | soda, pizza |
'%a%' | enthält a | banane, kakao |
'_a%' | a an 2. Stelle | Maier, Wand |
Dialektspezifische Wildcards
Neben dem Standard kennen manche Systeme weitere Platzhalter:
- MS Access nutzt
*statt%und?statt_(im SQL-Modus jedoch die Standardzeichen). - SQL Server erlaubt Zeichenklassen:
[a-c]matcht ein Zeichen aus dem Bereich a–c,[^x]ein beliebiges Zeichen außer x. Beispiel:LIKE '[BK]%'findet Wörter, die mit B oder K beginnen. - PostgreSQL bietet für solche Klassen
SIMILAR TOoder echte reguläre Ausdrücke mit~.
Stolperfalle
Willst du ein % oder _ als echtes Zeichen suchen, musst du es maskieren – sonst gilt es als Platzhalter. Mit der ESCAPE-Klausel legst du ein Fluchtzeichen fest: WHERE Code LIKE '50!%' ESCAPE '!' sucht nach dem Text „50%“. Ohne Maskierung würde „50“ plus beliebiger Rest gefunden.
Welcher Platzhalter steht für genau ein einzelnes Zeichen?