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

REGEXP_COUNT केस संवेदनशीलता को अनदेखा कर रहा है

भागो:

SELECT *
FROM   NLS_SESSION_PARAMETERS
WHERE  parameter IN ( 'NLS_COMP', 'NLS_SORT' );

और देखें कि आप किन NLS सत्र मापदंडों का उपयोग कर रहे हैं।

उदाहरण के लिए:

ALTER SESSION SET NLS_COMP=BINARY;
ALTER SESSION SET NLS_SORT=BINARY;
SELECT regexp_count('OOO', '[a-z0-9]', 1, 'c' ) AS COUNT_AZ,
       regexp_count('OOO', '[[:lower:][:digit:]]', 1, 'c' ) AS count_lower
FROM   DUAL;

आउटपुट:

लेकिन:

ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=GERMAN_AI;
-- or ALTER SESSION SET NLS_SORT=GERMAN_CI;
-- or ALTER SESSION SET NLS_SORT=FRENCH_CI;
-- or many others
SELECT regexp_count('OOO', '[a-z0-9]', 1, 'c' ) AS COUNT_AZ,
       regexp_count('OOO', '[[:lower:][:digit:]]', 1, 'c' ) AS count_lower
FROM   DUAL;

आउटपुट:

इसे ठीक करने के लिए, आप या तो कर सकते हैं:

  • NLS_SORT बदलें सत्र पैरामीटर।
  • या (जैसा कि @AlexPoole द्वारा बताया गया है) [:lower:] का उपयोग करें a-z . के बजाय POSIX वर्ण-सेट ।

db<>fiddle यहां




  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 ORA-00933:SQL कमांड ठीक से समाप्त नहीं हुआ?

  3. 2 कार्य जो Oracle में एक तिथि से दिन, महीना और वर्ष प्राप्त करते हैं

  4. खोल/पर्ल स्क्रिप्ट में पासवर्ड रखने के लिए सर्वोत्तम अभ्यास?

  5. ORA-01403:सेलेक्ट इन . के लिए कोई डेटा नहीं मिला