SQL lernen. Ein einfaches Tischspiel mit einem Feldtitel haben. Ich muss die Suche anhand des Titels durchsuchen. Für den Fall, dass ich ein Spiel namens Age of Empires III: Dynasties habe und LIKE mit dem Parameter Age of Empires III: Dynasties verwende, funktioniert alles einwandfrei, die Suche gibt den Datensatz mit diesem Namen zurück. Aber wenn ich mit Age of Empires III suche, gibt es keine Datensätze zurück: CODE:- SELECT * from games WHERE (lower(title) LIKE 'age of empires III'); Das bringt nichts. Wäre es eine gute Idee für mich, etwas anderes als LIKE zu verwenden? Ich verwende MySQL.
Gast
#7202324
Oliver G. schrieb: > Das bringt nichts. Wäre es eine gute Idee für mich, etwas anderes als > LIKE zu verwenden? Nein, like ist schon genau das Richtige. Man muss es halt auch richtig verwenden. Sprich: RTFM. Daraus kann man dann auch solche interessanten Informationen extrahieren, wie die, dass like Suchstrings mit Platzhaltern kann...
Gast
#7202329
Fehlt die %-Wildcard davor und dahinter: https://www.w3schools.com/sql/sql_like.asp
> Fehlt die %-Wildcard davor und dahinter
Korrekt.
1 | |
Edit: Das Lowercase kannst Du Dir sparen wenn Du bei der Tabelle eine case insensitive (ci) Kollation verwendest.
1 | |
Ben B. schrieb: > Das Lowercase kannst Du Dir sparen Es kann sogar kontraproduktiv sein. In manchen Sprachen (z.B. griechisch IIRC) haben mehrere Kleinbuchstaben den gleichen Großbuchstaben. Wenn man jetzt ins Suchfeld den einen Kleinbuchstaben eingibt, das "lower" aus dem String den jeweils anderen Kleinbuchstaben macht, stimmt es nicht überein. Daher immer eine "case insensitive" Vergleichsfunktion verwenden, denn die machen das i.d.R. korrekt.
Gast
#7202689
> SQL lernen
Hmmm... Bei 1000 Datensätzen funktionieren lower() und like()
einwandfrei. Aber bei realen Datenbanken kann so etwas ewig dauern.
Das zentrale Problem bei SQL sind die Performance-Optimierungen. Z.B.
funktioniert "%" am Ende meist recht gut - die Datenbank kann einen
Index benutzen. Idealerweise den Index gleich als lowercase anlegen.
Dagegen klappert die Datenbank bei "%" am Anfang die ganze Tabelle ab.
Solltest dir Beispiele mit Gigabyte an Daten suchen.
Gast
#7202736
Habe jetzt keinen Bock im Manual zu schmökern, aber würde doch gerne mal wissen, wieso in einem Text, der komplett in Kleinbuchstaben gewandelt wurde, etwas wie 3 große I gefunden werden.
Gast
#7202854
Das wird daran liegen:
> Das Lowercase kannst Du Dir sparen wenn Du bei der Tabelle eine *case
insensitive* (ci) Kollation verwendest.
Ben B. schrieb: > Oliver G. schrieb: >> Age of Empires III: Dynasties > >
1 | |
2 | |
ILIKE, anyone?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.