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