Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PL/SQL-Prozedur:AKTUALISIEREN Sie Namen in Großbuchstaben auf Initcaps, mit besonderer Behandlung einiger Werte

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.