Angenommen, die spezielle Behandlung ist nur für Namen wie 'S...
erforderlich , indem Sie ein einfaches REPLACE
hinzufügen sollte arbeiten. Übrigens, Sie brauchen nicht zwei separate UPDATE
Anweisungen - INITCAP
wandelt Nicht-Anfangszeichen automatisch in Kleinbuchstaben um.:
with v_data(name) as (
select 'AMSTERDAM' from dual union all
select '''S GRAVENHAGE' from dual union all
select 'DEN HAAG' from dual union all
select 'IJSLAND' from dual
)
select
replace(nls_initcap(name, 'NLS_SORT=xDutch'), '''S', '''s') name
from v_data
Name
----
Amsterdam
's Gravenhage
Den Haag
IJsland
Dadurch werden alle Vorkommen von 'S
ersetzt mit 's
. Wenn Sie auch andere Fälle behandeln müssen, schlage ich vor, dass Sie es mit REGEXP_REPLACE()
versuchen .
Die Funktion NLS_INITCAP
hilft bei einigen Globalisierungsproblemen. Zum Beispiel schreibt es sowohl das I
groß und das J
in IJSLAND
. Aber es hilft nicht mit 'S
Namen. Ich bin mir nicht sicher, ob das ein Fehler in den Globalisierungsfunktionen von Oracle ist oder ob diese Städtenamen Ausnahmen sind.