SQL Umlaute umsetzen
- Dieses Thema hat 2 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 2 Monaten von
Anonym.
-
AuthorPosts
-
27. Mai 2005 um 8:38 Uhr #2552
AnonymGasthallo ich habe folgendes Problem ich habe in meinen Programm eine Addresse in der alle ü ö ä´s zu ue ae und oe konvertiert sind, diese addresse möchte ich nun gerne in einer Tabelle auf der DB2 Datenbank suchen.
Das Problem ist nur, das in der DB-Tabelle die Addressen mit Umlauten abgelegt ist
(also ich habe z.b. den Straßennamen "ueber den Gaerten" und möchte in der Tabelle den Datensatz finden der als Straßennamen "über den Gärten" hat )
Leider kann ich innerhalb des Programms den Straßennamen nicht zurückkonvertieren, da es ja auch sein kann das die konstellation von u und e mal regulär auftritt. (z.b. "Uentenrecherstraße" oder so)
1. Juni 2005 um 10:41 Uhr #3002
AnonymGastHallo Flanders,
eine Möglichkeit wäre die Tabelle um Spalten zu erweitern, die den Wert ohne Umlaute enthalten. Also neben Strasse mit Wert "über den Gärten" gibt es eine zus. Column Strasse_search mit dem Wert "ueber den Gaerten". Bei der Suche musst du dann Strasse_search benutzten. Die Column muss natürlich von den Änderungsdiensten mitgepflegt werden (oder von einem Trigger). Zusätzlich kannst du in der search-Column alles gross oder klein schreiben, fall mal einer "Über den Gärten" sucht.
MfG Rolf
6. Juli 2005 um 12:05 Uhr #3316
AnonymInaktivHallo Flanders,
mit der REPLACE DB2-Function kannst Du erst alle Sonderzeichen umwandeln und dann natürlich auch im Resultat suchen.
select * from table
where ‚ueber den Gaerten‘ =
replace (
replace (
replace (
replace (
replace (
replace (
replace ( UMLAUTCOL , ‚ü‘ , ‚ue‘ )
, ‚ä‘ , ‚ae‘ )
, ‚ö‘ , ‚oe‘ )
, ‚Ü‘ , ‚Ue‘ )
, ‚Ä‘ , ‚Ae‘ )
, ‚Ö‘ , ‚Oe‘ )
, ‚ß‘ , ’ss‘ )Von der Performance-Sicht muß DB2 hier allerdings Einiges leisten. Column beschaffen, n-mal die Replace-Function ausführen etc.
Also Vorsicht bei der Nutzung dieser Funktionalität.
Willst Du diese Funktionalität auf Dauer nutzen, schließe ich mich der Aussage von Rolf an. Zweiten Column ohne Sonderzeichen definieren. Diesen Column kannst Du dann mittels des SQLs füllen oder auch mit einem TRIGGER aktuell halten (bei jedem INSERT oder UPDATE).
Je möglichem Sonderzeichen muß der neue Column in der Länge um 1 Byte größer sein als der Original Column.Aber auch hier Vorsicht, TRIGGER werden nur beim ONLINE-LOAD abgefeuert.
Gruß Klaus
-
AuthorPosts
You must be logged in to reply to this topic.