Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

REGEXP_COUNT mengabaikan sensitivitas huruf besar

Jalankan:

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

Dan lihat parameter sesi NLS yang Anda gunakan.

Misalnya:

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;

Keluaran:

Tapi:

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;

Keluaran:

Untuk memperbaikinya, Anda dapat:

  • Ubah NLS_SORT parameter sesi.
  • Atau (seperti yang disebutkan oleh @AlexPoole) gunakan [:lower:] Kumpulan karakter POSIX alih-alih a-z .

db<>fiddle di sini




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan parameter dalam masalah Oracle

  2. Database Oracle:penggunaan DBMS_ALERT dengan aplikasi java

  3. Operator Oracle MINUS Dijelaskan

  4. Parameterisasi nama tabel dalam file input sqlplus

  5. Deklarasikan Pengecualian Buat Pengguna Menggunakan Metode RAISE_APPLICATION_ERROR Di Database Oracle