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