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

Oracle में LIKE . के साथ एक्सेंट और केस असंवेदनशील संयोजन

एक तरीका यह होगा कि आप अपने सत्र मापदंडों को संशोधित करें NLS_SORT और NLS_COMP :

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe

SQL> alter session set nls_sort=Latin_AI;

Session altered

SQL> alter session set nls_comp=linguistic;

Session altered

SQL> SELECT Name FROM CollationTestTable WHERE NAME LIKE '%pe%';

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

जैसा कि दूसरे SO में दिखाया गया है, आप LIKE ऑपरेटर का उपयोग NLSSORT . के साथ नहीं कर सकते हैं (ऐसा इसलिए है, क्योंकि NLSSORT बाइट्स की एक स्ट्रिंग देता है जिसका उपयोग सॉर्टिंग के लिए किया जाएगा, और LIKE केवल चार्टर स्ट्रिंग्स के साथ काम करता है)

अपडेट करें: एनएलएस पैरामीटर सेट करते समय मेरी पहली पसंद होगी, आप समान परिणाम प्राप्त करने के लिए अंतर्निहित कार्यों का भी उपयोग कर सकते हैं। कुछ उदाहरण:

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(convert(NAME, 'US7ASCII'))
  4         LIKE upper(convert('%pe%', 'US7ASCII'));

NAME
--------------------------------------------------------------------------------
pepe
pépé
PEPE

SQL> SELECT Name
  2    FROM CollationTestTable
  3   WHERE upper(translate(NAME, 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'))
  4         LIKE upper(translate('%pe%', 'àâéèêìîòôùûÿ', 'aaeeeiioouuy'));

NAME
-----------------------------------
pepe
pépé
PEPE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में एक तिथि के लिए सामान्य संकेतक जोड़ें

  2. Oracle में, क्या किसी दृश्य के माध्यम से किसी रिकॉर्ड को सम्मिलित करना या अद्यतन करना संभव है?

  3. 'कहां मान में...' खंड में पैरामीटर का उपयोग कैसे करें?

  4. विजुअल C# 2008 . में tnsnames.ora को पार्स करना

  5. sysdate के साथ to_date फ़ंक्शन