Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

REGEXP_COUNT bỏ qua phân biệt chữ hoa chữ thường

Chạy:

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

Và xem những thông số phiên NLS nào bạn đang sử dụng.

Ví dụ:

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;

Kết quả đầu ra:

Nhưng:

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;

Kết quả đầu ra:

Để khắc phục điều này, bạn có thể:

  • Thay đổi NLS_SORT tham số phiên.
  • Hoặc (như được đề cập bởi @AlexPoole) sử dụng [:lower:] Bộ ký tự POSIX thay vì a-z .

db <> fiddle tại đây




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ứng dụng OCCI gặp sự cố khi chạy ở chế độ gỡ lỗi trong Visual Studio 2005

  2. cách chọn giá trị not-null từ Oracle (phương pháp tối ưu hóa)

  3. Làm thế nào để buộc pascal case với sự hỗ trợ Entity Framework của Oracle?

  4. Sự kiện chờ:thay đổi kích thước bộ mô tả asynch

  5. Lỗi SQL:ORA-12899:giá trị quá lớn cho cột