Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

PL/SQL प्रक्रिया:कुछ मानों के लिए विशेष हैंडलिंग के साथ अपरकेस नामों को initcaps में अपडेट करें

मान लें कि विशेष हैंडलिंग केवल 'S... . जैसे नामों के लिए आवश्यक है , एक साधारण REPLACE जोड़ना कार्य करना चाहिए। BTW, आपको दो अलग-अलग 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 . के साथ मदद नहीं करता है names. मुझे यकीन नहीं है कि यह 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. सी # से ओरेकल प्रक्रिया में सरणी पास करना

  2. Oracle अपडेट हैंग हो जाता है

  3. कनेक्शन पूल को अक्षम कैसे करें?

  4. ORA-00942:टेबल या व्यू मौजूद नहीं है... क्या मुझे और जानकारी मिल सकती है?

  5. javax.persistence.EntityExistsException सीक्वेंस जेनरेटर के साथ