Oracle正则表达式类忽略区分大小写

Oracle正则表达式类忽略区分大小写,oracle,nls,regexp-like,oracle-text,nls-lang,Oracle,Nls,Regexp Like,Oracle Text,Nls Lang,我们正在Oracle Database 19.3中尝试以下请求,结果就像忽略了区分大小写一样 select 1 from dual where regexp_like('CHIEN', '[a-z]+', 'c'); 请求的结果是 1 即使: ALTER SESSION SET NLS_COMP=ANSI; ALTER SESSION SET NLS_SORT=GERMAN_AI; 我们认为这来自NLS参数,但我们没有找到哪一个 我们有这些参数: NAME

我们正在Oracle Database 19.3中尝试以下请求,结果就像忽略了区分大小写一样

select 1 from dual where regexp_like('CHIEN', '[a-z]+', 'c');
请求的结果是

1
即使:

ALTER SESSION SET NLS_COMP=ANSI;
ALTER SESSION SET NLS_SORT=GERMAN_AI;
我们认为这来自NLS参数,但我们没有找到哪一个

我们有这些参数:

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_calendar                         string      GREGORIAN
nls_comp                             string      BINARY
nls_currency                         string      €
nls_date_format                      string      DD/MM/RR
nls_date_language                    string      FRENCH
nls_dual_currency                    string      €
nls_iso_currency                     string      FRANCE
nls_language                         string      FRENCH
nls_length_semantics                 string      BYTE
nls_nchar_conv_excp                  string      FALSE
nls_numeric_characters               string      ,

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_sort                             string      FRENCH
nls_territory                        string      FRANCE
nls_time_format                      string      HH24:MI:SSXFF
nls_timestamp_format                 string      DD/MM/RR HH24:MI:SSXFF
nls_timestamp_tz_format              string      DD/MM/RR HH24:MI:SSXFF TZR
nls_time_tz_format                   string      HH24:MI:SSXFF TZR

我们的NLS_LANG设置为French_France。AL32UTF8

最终我找到了解决方案

问题在于NLS_SORT=法语(或任何语言种类)

NLS_SORT=法语。。。。Z

当我们查找正则表达式[a-z]时,我们包括BCDE。。。Z

解决方案是设置NLS\u SORT=BINARY


在本例中,我设置了环境变量NLS_SORT=BINARY。否则,Oracle将采用与NLS_LANG相对应的默认NLS_排序值。

第三个参数应用区分大小写或不区分大小写的值。如果您将C设置为区分大小写,则必须将“i”设置为区分大小写。是的,请将NLS排序/排序设置从区分大小写更改为区分大小写,这样应该可以解决问题。它不能解决问题。使用regexp\u count是可以的,但使用regexp\u-like则不行。这篇文章将帮助您。