Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Thủ tục PL / SQL:CẬP NHẬT tên chữ hoa thành initcaps, với cách xử lý đặc biệt đối với một số giá trị

Giả sử việc xử lý đặc biệt chỉ cần thiết đối với các tên như 'S ... , thêm một REPLACE đơn giản nên làm việc. BTW, bạn không cần hai UPDATE riêng biệt câu lệnh - INITCAP sẽ tự động chuyển đổi các ký tự không phải ký tự đầu tiên thành chữ thường.:

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

Điều này sẽ thay thế tất cả các lần xuất hiện của 'S với của . Nếu bạn cũng cần xử lý các trường hợp khác, tôi khuyên bạn nên thử REGEXP_REPLACE () .

Hàm NLS_INITCAP giúp giải quyết một số vấn đề toàn cầu hóa. Ví dụ:nó viết hoa cả I J trong IJSLAND . Nhưng nó không hữu ích với 'S những cái tên. Tôi không chắc đó có phải là lỗi với các chức năng toàn cầu hóa của Oracle hay không hay những tên thành phố đó đều là ngoại lệ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để Chọn một chuỗi con trong Oracle SQL cho đến một ký tự cụ thể?

  2. Làm thế nào để chạy nhóm truy vấn SQL theo vấn đề?

  3. Thông báo thay đổi cơ sở dữ liệu JPA Eclipselink không làm mất hiệu lực mục nhập bộ nhớ cache

  4. Chuỗi kết nối Oracle với at sign @ in pasword

  5. Nhận kết quả hàng đầu cho từng nhóm (trong Oracle)