Oracle Suche nach Umlauten Ä und Ae ermöglichen

AssELAss

Aktives Mitglied
Hallo Leute,

auf einer Oracle DB sind die Umlaute gespeichert, hab nun ein kleines Suchprogramm geschrieben. Dort möchte ich auch bei Eingabe von ae das gleich angezeigt bekommen wie wenn ich nach ä suche.
Desweiteren wäre es cool auch so ß und ss gleich zu setzen.

Wie Löse ich das am einfachsten in Oracle SQL?

Grüße
 
Du kannst die REPLACE Methode von Oracle verwenden (sprich direkt das SQL Statement anpassen)

Aber Achtung ... ae ist nicht immer ä 😉
Beispiel: Raphael
(gleiches gilt auch für ß/ss, vor allem wenn man die neue Rechtschreibung beachtet)
 
Zuletzt bearbeitet:
Vielleicht habe ich mich ein wenig umständlich ausgedrückt.
Ich habe ein Suchfeld dort möchte ich auch Mueller statt Müller eingeben können um ein Ergebnis zu bekommen.
Gleiches auch für ß

Beide Eingaben sollen also möglich sein
 
Zuletzt bearbeitet:
Du hast dich sehr verständlich ausgedrückt.

Gut du hast dein Suchfeld gibst etwas ein.
Möglichkeit 1: Manipuliere deinen Suchbegriff direkt in Java
Möglichkeit 2: Passe das SQL Statement an (mein Vorschlag, da du diese Frage im Bereich Datenbankprogrammierung gestellt hast)
 
SELECT * FROM TBL_ WHERE REPLACE(name1, 'ä', 'ae') || name1 like 'Gläß%';

hier kein Ergebnis, nur wenn ich mit ae eingebe.

SELECT * FROM TBL_ WHERE REPLACE(name1, 'ä', 'ae') && name1 like 'Gläß%';

hier das gleiche, scheint immer nur vor der Verknüpfung zu funktionieren.
Stehe gerade auf dem Schlauch.
 
SELECT * FROM TBL_ WHERE REPLACE(name1, 'ä', 'ae') || name1 like 'Gläß%';
Stehe gerade auf dem Schlauch.

Ja dein Replace hat in diesem Fall gar keine Wirkung.
Du ersetzt zwar von "name1" die Buchstaben usw., aber du prüfst den geänderten Wert nicht gegen etwas.
Noch dazu willst du sicher nicht den Wert vom Datenbankinhalt ändern sondern den deines eingegebenen Parameters.

Probiere mal:
SELECT * FROM TBL_ WHERE REPLACE([DEIN PARAMETER], 'ä', 'ae') LIKE name1

Was aber das Problem bei dieser REPLACE Geschichte ist ... du müsstest für jeden Zeichen ein Replace einbauen, was sehr unschön wird.
Daher würde ich dir vorschlagen diese Problem schon in Java anzugehen und beim Erstellen des SQL Statements mögliche Zeichen zu ersetzen.
 
Zuletzt bearbeitet:
Das Ganze kann aber irgendwie beliebig kompliziert werden.

Wenn Du das im Java machst, dann must du ja praktisch das SQL Statement so ändern, dass du auf mehrere String abfragst. Also Beispiel:

Eingabe im Suchfeld:

Hänsel Müller

Jetzt must du im Prinzip in der DB suchen nach

Hänsel Müller
Haensel Müller
Haensel Mueller
Hänsel Mueller

Das bedeutet ein

WHERE name1="Hänsel Müller" OR name1="Haensel Müller" OR name1="Haensel Mueller" OR name1="Hänsel Mueller"

Jetzt noch ein paar Umlaute mehr und Du hast echt Spaß.

Gruß

Claus

P.S. Eine einfache Lösung habe ich aber leider auch nicht.
 
Zuletzt bearbeitet:
Wie werden die Daten denn eigentlich genau gespeichert?

Kann die Datenbank beides enthalten? 'ä' und 'ae' oder wird nur das eine oder das andere gespeichert?
 
Gut dann formuliere ich meine Frage um:

Wie wurden die Daten in der Datenbank gespeichert?
Sind dort alle Daten mit Umlauten gepspeichert oder mal mit und mal ohne?
 
Ok, das vereinfacht es etwas.

Wie schon oben erwähnt entweder das SQL Statement entsprechend anpassen oder direkt in Java den eingegebenen Suchbegriff anpassen.

Mir stellt sich immer noch die Frage woher willst du wissen ob der eingegeben Wert "ue" ein "ü" sein sollte/darf? (Gleiches gilt für ä/ae, ö/oe und ss/ß)
 

Neue Themen


Zurück
Oben