Zum Inhalt
wannacode

IN, BETWEEN und LIKE

Kurz gesagt: IN prüft, ob ein Wert in einer Liste steht, BETWEEN, ob er zwischen zwei Grenzen liegt, und LIKE vergleicht einen Teil eines Textes mit einem Muster aus % und _.

Problem

Drei Städte, drei ORs

Der Kurierdienst für den Nordosten und die Küste beliefert Varna, Burgas und Ruse. Du brauchst die Kunden aus diesen Städten:

SQLDatenbank: Shop

Es funktioniert, aber bei zehn Städten wird die Bedingung zu einer Zeile voller ORs, in der man leicht eines vergisst.

Die Idee

IN: eines aus der Liste

IN prüft, ob ein Wert in einer Liste steht:

SQLDatenbank: Shop

Dasselbe Ergebnis, und die Liste liest sich auf einen Blick. NOT IN ist das Gegenteil: alles außer den aufgeführten.

Die Idee

BETWEEN: zwischen zwei Grenzen

BETWEEN a AND b heißt „von a bis b“, einschließlich a und b:

SQLDatenbank: Shop

Datumsangaben stehen in der Datenbank als Text wie 2026-03-31. Solcher Text sortiert sich so wie Datumsangaben, also funktioniert BETWEEN auch dafür. Die Bestellungen aus dem ersten Quartal 2026:

SQLDatenbank: Shop
Genauer, für Neugierige

Hat das Datum auch eine Uhrzeit (2026-03-31 18:20), verpasst BETWEEN '2026-01-01' AND '2026-03-31' den 31. März nach Mitternacht, denn '2026-03-31 18:20' kommt nach '2026-03-31'. Dann ist es sicherer, ordered_at >= '2026-01-01' AND ordered_at < '2026-04-01' zu schreiben.

Probier es aus

Die offenen Bestellungen

Zeige Nummer, Datum und Status der Bestellungen, die weder zugestellt (delivered) noch storniert (cancelled) sind.

SQLDatenbank: Shop

Die Idee

LIKE: nach einem Teil des Textes

LIKE vergleicht mit einem Muster. Im Muster bedeutet % „beliebiger Text, auch keiner“ und _ „genau ein Zeichen“.

SQLDatenbank: Shop

'%brot%' findet jeden Namen, in dem irgendwo „brot“ steht. 'brot%' würde Namen suchen, die damit beginnen, und '%brot' solche, die damit enden.

Sieh es dir an

Groß- und Kleinschreibung

Welche Produkte heißen „butter“ und „äpfel“? Beides klein geschrieben. Führe aus:

SQLDatenbank: Shop

„Butter“ kommt heraus, obwohl es mit großem B gespeichert ist. „Äpfel“ fehlt. In SQLite ignoriert LIKE die Groß- und Kleinschreibung, aber nur für die Buchstaben A–Z. Für Umlaute sind ein großes Ä und sein kleines ä zwei verschiedene Zeichen: Auf den deutschen Seiten dieses Kurses findet eine Suche nach dem klein geschriebenen „äpfel“ die „Äpfel“ nicht. Dasselbe gilt für Ö und Ü.

Genauer, für Neugierige

Datenbanken unterscheiden sich hier. In PostgreSQL beachtet LIKE immer die Schreibweise, und ILIKE ignoriert sie für jedes Alphabet. In MySQL hängt es von der Einstellung für den Textvergleich ab (Collation), und meist wird die Schreibweise ignoriert. Wenn eine Suche für jedes Alphabet funktionieren soll, braucht SQLite eine Erweiterung (ICU), oder du führst eine eigene Spalte mit dem Text in Kleinbuchstaben.

Probier es aus

Die Milch

Zeige Name und Preis der Produkte mit „milch“ im Namen.

SQLDatenbank: Shop

Übung

Zwei Aufgaben

1. Die Bestellungen aus dem Sommer 2026 (Juni, Juli, August): Nummer, Kunde und Datum.

Die Bestellungen zwischen dem 1. Juni und dem 31. August 2026:

SQLDatenbank: Shop

2. Die Kunden, deren Name mit „M“ beginnt: Name und Stadt.

Die Kunden, deren Name mit „M“ beginnt:

SQLDatenbank: Shop

Test

Teste dich

1. Welche Preise erfasst price BETWEEN 2 AND 3?
2. Was findet name LIKE '%kaffee%'?
3. Findet LIKE 'kaffee%' in SQLite „Kaffeebohnen“?
4. Wie schreibst du „das Datum liegt im Oktober 2026“ für ordered_at?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·