Text vergleichen
Um eine Spalte mit einem Text zu vergleichen, schreibe den Text in einfache Anführungszeichen, wie du es in der vorigen Lektion mit || getan hast:
SELECT titel, preis
FROM spiele
WHERE genre = 'Puzzle';| titel | preis |
|---|---|
| Cube Logic | 5 |
| Word Quest | 10 |
Typischer Fehler: Text ohne Anführungszeichen. SQLite hält dann Puzzle für den Namen einer Spalte, und WHERE genre = Puzzle endet mit dem Fehler no such column: Puzzle.
= vergleicht Text genau, Zeichen für Zeichen, und ein Großbuchstabe ist ein anderes Zeichen als ein Kleinbuchstabe. WHERE genre = 'puzzle' findet nichts, und 'Puzzle ' mit einem Leerzeichen am Ende auch nicht. Das Ergebnis einer solchen Abfrage ist nur die Zeile mit den Spaltennamen, ohne Zeilen. Wenn eine Abfrage, die etwas finden sollte, nichts findet, vergleiche ihren Text mit dem Tab Tabellen.
Der Titel Knight's Oath enthält einen Apostroph, und das ist dasselbe Zeichen, das einen Text beendet. Hier endet der Text nach Knight, und SQLite weiß mit dem Rest nichts anzufangen:
SELECT *
FROM spiele
WHERE titel = 'Knight's Oath';Error on line 1: near "s": syntax errorSchreibe in einem Text einen Apostroph doppelt: 'Knight''s Oath'. Zwei Apostrophe hintereinander bedeuten einen Apostroph im Text, und der Text geht weiter.
Und doppelte Anführungszeichen? In SQL sind sie für die Namen von Tabellen und Spalten da, nicht für Text. SQLite hält "Puzzle" manchmal auch für einen Text, aber nur, wenn keine Spalte diesen Namen hat, und andere Datenbanken akzeptieren das überhaupt nicht. Text steht immer in einfachen Anführungszeichen.
Text kann auch mit <, >, <= und >= verglichen werden. Dann gilt das Alphabet: Ein Text ist „kleiner“, wenn er im Alphabet früher kommt. Die Spiele, deren Titel vor dem Buchstaben D kommt:
SELECT titel
FROM spiele
WHERE titel < 'D'
ORDER BY titel;| titel |
|---|
| Bakery Story |
| Castle Siege |
| Cube Logic |
Castle Siege und Cube Logic sind dabei, obwohl sie länger als 'D' sind: Text wird ab dem ersten Zeichen verglichen, und C kommt vor D. Wenn ein Text der Anfang eines anderen ist, kommt der kürzere zuerst, also ist 'Castle' kleiner als 'Castle Siege'.
Genau genommen vergleicht SQLite Text anhand der Codes seiner Zeichen, und in denen kommen alle Großbuchstaben vor allen Kleinbuchstaben: 'Zebra' < 'apfel' ist wahr. ORDER BY sortiert Text genauso, ein Titel, der mit einem Kleinbuchstaben beginnt, käme also nach allen anderen.
So schreibst du es:
Anweisungen
- 1
Zeige den Titel und den Preis der Strategiespiele (das Genre
Strategie), das billigste zuerst:titel preis Tiny Kingdoms 25 Castle Siege 30 Galaxy Trader 35 - 2
Zeige darunter alle Spalten des Spiels Knight's Oath. Finde es über seinen Titel:
id titel genre preis erschienen altersfreigabe 15 Knight's Oath RPG 60 2025-11-14 16 - 3
Der Shop räumt seine Regale um, und du stellst die Spiele von S bis Z auf. Zeige die Titel der Spiele, die mit S oder einem späteren Buchstaben beginnen, sortiert nach dem Titel:
titel Shadow Ninja Star Pilots Tiny Kingdoms Turbo Karts Word Quest Zombie Town