= ·
LIKE ·
IN ·
BETWEEN ·
IS NULL ·
AND / OR / NOT
Mit der WHERE-Klausel filtern Sie Daten präzise. Diese Operatoren helfen Ihnen, genau die Datensätze zu finden, die Sie benötigen – von einfachen Vergleichen bis zu komplexen Mustern.
Vergleichsoperatoren vergleichen Werte in der WHERE-Klausel. Sie sind die grundlegendsten Operatoren für Datenfilterung.
| Operator | Bedeutung | Beispiel |
|---|---|---|
| = | Gleich | WHERE name = 'Laptop' |
| <> oder != | Ungleich | WHERE kategorie <> 'Bücher' |
| > | Größer als | WHERE preis > 100 |
| < | Kleiner als | WHERE preis < 50 |
| >= | Größer oder gleich | WHERE preis >= 100 |
| <= | Kleiner oder gleich | WHERE preis <= 50 |
LIKE ermöglicht die Suche nach Textmustern. Mit % (beliebig viele Zeichen) und _ (genau ein Zeichen) können Sie flexible Suchmuster definieren.
| Muster | Bedeutung | Beispiel |
|---|---|---|
| '%wort%' | Enthält "wort" | LIKE '%book%' → "notebook", "bookshop" |
| 'wort%' | Beginnt mit "wort" | LIKE 'A%' → "Anna", "Albert" |
| '%wort' | Endet mit "wort" | LIKE '%mann' → "Mustermann" |
| 'w_t' | w + beliebiges Zeichen + t | LIKE 'w_t' → "wit", "wat" (nicht "wort") |
| '[a-f]%' | Beginnt mit a-f (SQL Server) | LIKE '[a-f]%' → "apple", "banana" |
| '%\_%' ESCAPE '\' | Enthält einen Unterstrich | LIKE '%\_%' ESCAPE '\' → "file_name" |
LIKE mit führendem % kann bei großen Tabellen langsam sein, da kein Index genutzt werden kann. Verwenden Sie Volltextsuche (z.B. PostgreSQL tsvector) für komplexe Textsuche.
IN prüft, ob ein Wert in einer Liste von Werten enthalten ist. Eine elegantere Alternative zu mehreren OR-Bedingungen.
IN mit einer langen Liste von Werten kann die Performance beeinträchtigen. Bei sehr großen Listen sollten Sie eine temporäre Tabelle oder einen JOIN verwenden.
BETWEEN prüft, ob ein Wert in einem inklusiven Bereich liegt. Es ist eine kompakte Alternative zu wert >= x AND wert <= y.
BETWEEN ist inklusiv – die Grenzwerte werden mit einbezogen. Bei Datumsangaben sollten Sie darauf achten, dass BETWEEN '2024-01-01' AND '2024-12-31' den 31.12. um 00:00 Uhr einschließt.
IS NULL prüft, ob ein Feld den Wert NULL (unbekannt / nicht vorhanden) enthält. IS NOT NULL prüft auf Vorhandensein eines Werts.
NULL ist kein Wert, sondern ein Zustand ("unbekannt"). Deshalb funktioniert = NULL nicht – verwenden Sie immer IS NULL oder IS NOT NULL.
Logische Operatoren kombinieren Bedingungen. AND verlangt, dass alle Bedingungen erfüllt sind, OR mindestens eine. NOT kehrt eine Bedingung um.
| Operator | Beschreibung | Priorität |
|---|---|---|
| AND | Alle Bedingungen müssen wahr sein | Höher als OR |
| OR | Mindestens eine Bedingung muss wahr sein | Niedriger als AND |
| NOT | Kehrt die Wahrheit einer Bedingung um | Höchste Priorität |
| () | Gruppiert Bedingungen | Höchste Priorität |
AND wird vor OR ausgewertet. Verwenden Sie immer Klammern, wenn Sie AND und OR kombinieren, um die gewünschte Logik sicherzustellen.
=
LIKE
IN
BETWEEN
IS NULL
AND/OR
WHERE preis BETWEEN 50 AND 200 ·
WHERE name LIKE '%book%' ·
WHERE kategorie IN ('Elektronik', 'Bücher')