実行:
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 こちら