Oracle
 sql >> база данни >  >> RDS >> Oracle

PL/SQL процедура:АКТУАЛИЗИРАНЕ на имената с главни букви до initcaps, със специална обработка за някои стойности

Ако приемем, че специалната обработка е необходима само за имена като 'S... , добавяйки прост REPLACE трябва да работи. Между другото, нямате нужда от две отделни UPDATE изрази - INITCAP автоматично ще конвертира неначалните знаци в малки букви.:

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

Това ще замени всички срещания на 'S с 's . Ако трябва да се справите и с други случаи, предлагам ви да опитате REGEXP_REPLACE() .

Функцията NLS_INITCAP помага при някои проблеми на глобализацията. Например, той изписва с главни букви и I и J в IJSLAND . Но не помага с 'S имена. Не съм сигурен дали това е грешка във функциите за глобализация на Oracle или тези имена на градове са изключения.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се използва DROP TABLE IF EXISTS в schema.sql за приложение за Spring Boot

  2. Различни стойности се отчитат в една и съща колона

  3. Променете порта на Oracle от порт 8080

  4. Премахване на Oracle Data Provider за .NET от Global Assembly Cache

  5. Грешка на Oracle Apex 20.1:Грешка при обработката на валидирането