Muster mit LIKE
= vergleicht einen ganzen Text. Manchmal kennst du nur einen Teil davon: Der Titel beginnt mit S, die E-Mail-Adresse endet mit einer bestimmten Domain. Dafür gibt es LIKE. Es vergleicht einen Text mit einem Muster:
SELECT titel
FROM spiele
WHERE titel LIKE 'S%'
ORDER BY titel;| titel |
|---|
| Shadow Ninja |
| Star Pilots |
In einem Muster steht % für beliebigen Text: beliebige Zeichen, so viele du willst, oder gar keine. 'S%' bedeutet „S und dann irgendetwas“, findet also die Titel, die mit S beginnen. '%s' findet die Texte, die auf s enden, und '%Pro%' die, die irgendwo Pro enthalten: am Anfang, in der Mitte oder am Ende.
_ (ein Unterstrich) steht für genau ein Zeichen, egal welches. Die Titel, deren zweiter Buchstabe ein o ist:
SELECT titel
FROM spiele
WHERE titel LIKE '_o%'
ORDER BY titel;| titel |
|---|
| Goal Rush |
| Lost Temple |
| Moon Farm |
| Robot Rebellion |
| … |
Anders als = unterscheidet LIKE in SQLite nicht zwischen Groß- und Kleinbuchstaben: 's%' findet auch Shadow Ninja und Star Pilots. Andere Datenbanken können das anders handhaben; in PostgreSQL zum Beispiel unterscheidet LIKE zwischen Groß- und Kleinschreibung.
NOT LIKE findet die Texte, die nicht zum Muster passen. Die Bewertungen, deren Kommentar nicht mit einem Punkt endet:
SELECT sterne, kommentar
FROM bewertungen
WHERE kommentar NOT LIKE '%.'
ORDER BY sterne DESC;| sterne | kommentar |
|---|---|
| 5 | Das beste RPG seit Jahren! |
| 4 | Gruselig! |
Die Bewertungen ohne Kommentar sind nicht im Ergebnis, obwohl ein fehlender Kommentar sicher nicht mit einem Punkt endet. Ihr Kommentar ist NULL, und bei NULL kann SQLite nicht sagen, ob er zum Muster passt oder nicht. Mehr dazu in der nächsten Übung.
Typischer Fehler: % mit = statt LIKE. WHERE titel = 'S%' findet nichts: = nimmt das % wörtlich und sucht einen Titel, der nur aus einem S und einem Prozentzeichen besteht.
So schreibst du es:
Anweisungen
- 1
Zeige den Namen und die E-Mail-Adresse der Kunden, deren E-Mail-Adresse auf
@mail.deendet, sortiert nach dem Namen:name email Anna Fischer anna.fischer@mail.de Emma Becker emma.becker@mail.de Greta Hoffmann greta.hoffmann@mail.de … … - 2
Zeige darunter die Titel der Spiele, die irgendwo den Buchstaben k enthalten, groß oder klein, sortiert nach dem Titel:
titel Bakery Story Ice Hockey Pro Knight's Oath Tiny Kingdoms Turbo Karts - 3
Und zeige darunter den Namen und die E-Mail-Adresse der Kunden, deren E-Mail-Adresse nicht auf
@mail.deendet, sortiert nach dem Namen:name email Hannes Schulz hannes@schulz.dev Jonas Hartmann jonas@hartmann.io Olivia Braun olivia@braunfamilie.net