如何解决Oracle REGEXP_LIKE 忽略大小写敏感度
我们正在 Oracle 数据库 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=FRENCH(或任何语言排序)
NLS_SORT=FRENCH => AaBbCcDdEeFfGgHhIiJjKkLlMmNn .... Z
当我们查找正则表达式 [a-z] 时,我们包括 BCDE ... Z
解决办法是设置NLS_SORT=BINARY
就我而言,我设置了环境变量 NLS_SORT=BINARY。否则,Oracle 将采用与 NLS_LANG 对应的默认 NLS_SORT 值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。