SQL: case-sensitive Abfrage?
Julian Hofmann
- datenbank
0 KATI
Hallo.
Vielleicht ist der Abend ja doch schon zu spät (oder der Morgen zu früh). Irgendwie will mein SELECT-Ausdruck nicht so wie ich will.
In einer Datenbank sind für eine Suchmaschine alle Keywords gespeichert. Warum liefert bitte
SELECT key_id FROM keywords WHERE keyword = 'Standard'
und
SELECT key_id FROM keywords WHERE keyword = 'standard'
die selben Ergebnisse (für flüchtige Leser: einmal groß- und einmal kleingeschrieben)?
Auch per Regexp kam ich nicht wirklich weiter (was aber auch dran liegen mag, dass ich das nicht gerade eine Leuchte bin).
Arbeitet (my)SQL bei Vergleichen standardmäßig case-sensitive oder -insensitive?
Grüße aus Würzburg in die Nacht
Julian
hallo, ich habe es direkt in der Kommandozeile ausprobiert - es ist also wurst ob du 'standard' oder 'Standard' schreibst...
da ist die erklärung dazu
http://www.netrpx.com/tutorials/mysql/mysql8.php
das funktioniert aber nur mit regexp - bei mir hat es doch hinhauen können.
Bsp.:
also in der DB ist kati kleingeschrieben
select * from tabelle where regexp name = "Kati"; //gefunden
select * from tabelle where regexp binary name = "Kati"; //empty set
cu kati
Hallo.
Vielleicht ist der Abend ja doch schon zu spät (oder der Morgen zu früh). Irgendwie will mein SELECT-Ausdruck nicht so wie ich will.
In einer Datenbank sind für eine Suchmaschine alle Keywords gespeichert. Warum liefert bitte
SELECT key_id FROM keywords WHERE keyword = 'Standard'
und
SELECT key_id FROM keywords WHERE keyword = 'standard'
die selben Ergebnisse (für flüchtige Leser: einmal groß- und einmal kleingeschrieben)?
Auch per Regexp kam ich nicht wirklich weiter (was aber auch dran liegen mag, dass ich das nicht gerade eine Leuchte bin).
Arbeitet (my)SQL bei Vergleichen standardmäßig case-sensitive oder -insensitive?
Grüße aus Würzburg in die Nacht
Julian
Hallo Kati.
vielen dank. hat geklappt. Was doch so ein "binary" alles ausmachen kann...
select * from tabelle where regexp binary name = "Kati"; //empty set
spuckt nen Syntaxfehler bei mir aus. Mit
select * from tabelle where name regexp binary "Kati"; //empty set
klappt's aber.
Grüße aus Würzburg
Julian
sorry, war ein Fehler von mir... ich hätte auf das Msdos-Fenster besser gucken müssen :-) ich habe das beim Threadschreiben vertauscht.
wollte dich net verwirren.
cu kati
Hallo Kati.
vielen dank. hat geklappt. Was doch so ein "binary" alles ausmachen kann...
select * from tabelle where regexp binary name = "Kati"; //empty set
spuckt nen Syntaxfehler bei mir aus. Mit
select * from tabelle where name regexp binary "Kati"; //empty set
klappt's aber.
Grüße aus Würzburg
Julian
Aloha!
vielen dank. hat geklappt. Was doch so ein "binary" alles ausmachen kann...
Ich würde nicht deshalb, weil du ein simples Wort suchst, gleich mit RegEx um mich schlagen.
Wenn du die Tabelle anlegst, hast du die Möglichkeit, auch Textfelder als "binary" zu deklarieren. Normale Textfelder sind case-insensitiv, binäre Textfelder sind case-sensitiv. Mußt du halt so anlegen, wie du es brauchst.
- Sven Rautenberg
Hi Sven.
Na das klingt ja mal gut. Vielleicht sollte ich mich doch endlich mal tiefer in Datenbanken einarbeiten...
Vielen Dank, werd ich doch gleich mal umsetzen und ändern.
Grüße aus Würzburg
Julian