मान लें कि विशेष हैंडलिंग केवल '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 के वैश्वीकरण कार्यों के साथ एक बग है या यदि उन शहर के नाम सभी अपवाद हैं।