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.