【发布时间】:2020-10-14 11:18:02
【问题描述】:
您好,我正在尝试实现一些简单的 oracle 查询,并且正在测试 regexp_count 的用法。
我遇到了这个奇怪的案例,代码:
select regexp_count('OOO', '[a-z0-9]', 1,'c') from dual;
这返回 3(每个字符 1 个匹配项),而它应该返回 0。似乎它忽略了标志 'c'(区分大小写),并将 'O' 匹配为 'o'。
这是预期的行为还是我遗漏了什么?
【问题讨论】:
-
这适用于 dbfiddle: dbfiddle.uk/….
-
您确定您的模式是 not
'[a-zA-Z0-9]',或者该值包含 三个零 而不是三个字母“O” .. ? (它工作正常) -
到底是什么我的预言机配置错误,我使用的是 12.2.0.1.0 不确定是否重要@GordonLinoff
-
@BarbarosÖzhan 那是确切的 qeury,它一定是我的 oracle 上的一些错误配置
-
您使用的是什么语言环境,您的会话中的 NLS_SORT 设置是什么? 'c' 匹配参数可能会使其无关紧要,但仍然......您可以通过使用
'[[:lower:]0-9]'或'[[:lower:][:digit:]]'来避免此问题,并且在这种情况下可能不需要 'c'。