Hallo,
ich verwende eine SQLite-Datenbank (SQLite 2) für eine Kundenverwaltung (PHP-Anwendung). Nun habe ich einen Kunden, dessen Nachnamen mit einem Umlaut beginnt (z.B. „Ölmersheimer“).
Ich habe dann zwei Probleme:
-
Eine Suche „SELECT * FROM kunden WHERE Nachname LIKE ‚ölmer%‘“ findet den Kunden nicht, weil Umlaute auch unter Verwendung von LIKE case-sensitve sind. Ich müsste also nach ‚Ölmer%‘ suchen, aber das tut man in der Praxis eher nicht.
-
Bei einer Auflistung aller Kunden erscheint mein fiktiver Herr Ölmersheimer nicht unter O oder Oe, sondern ganz unten nach dem Z - dies entspricht der SQLite-internen Sortierreihenfolge, nicht aber der im Deutschen üblichen.
Kennt jemand für diese beiden Probleme Workarounds oder Lösungsmöglichkeiten?
Viele Grüße
Stefan
Vielleicht eine Idee zu deinem ersten Problem - wandel doch alles in Großbuchstaben per Funktion um.
SELECT * FROM kunden WHERE Upper(Nachname) LIKE Upper(‚ölmer%‘)
Für das andere fehlt mir noch die Idee - Telefon klingelt gerade.
EPa
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Vielleicht eine Idee zu deinem ersten Problem - wandel doch
alles in Großbuchstaben per Funktion um.
SELECT * FROM kunden WHERE Upper(Nachname) LIKE
Upper(‚ölmer%‘)
Für das andere fehlt mir noch die Idee - Telefon klingelt
gerade.
EPa
Hallo,
Vielen Dank. Der Vorschlag klang eigentlich sehr gut, aber leider wird ein kleines „ö“ von der UPPER-Funktion ignoriert und nicht in ein großes „Ö“ umgewandelt. Schade…
Weitere Ideen?
Grüße
Stefan
Hallo,
ich arbeite mit MS SQL. Da hat mein Vorschlag mit Upper wunderbar funktioniert.
SELECT * FROM Kunden
WHERE (UPPER(Nachname) LIKE UPPER(‚ö%‘))
Zu deiner zweiten Anfrage:
Unser MS SQL kann ich die Umlaute mit dem Befehl Replace durch die Vokalkombinationen ersetzen.
Habe nachfolgenden Befehl auf meine Kundendatenbank angewendet:
SELECT REPLACE(UPPER(REPLACE(UPPER(REPLACE(UPPER(Nachname), ‚Ü‘, ‚UE‘)), ‚Ö‘, ‚OE‘)), ‚Ä‘, ‚AE‘) AS NachnameOhneUmlaute FROM Kunden
Viele Grüße
EPa