PL/SQL Oracle 正则表达式对于零的出现不起作用

Posted

技术标签:

【中文标题】PL/SQL Oracle 正则表达式对于零的出现不起作用【英文标题】:PL/SQL Oracle regular expression doesn't work for occurencce of zero 【发布时间】:2010-08-20 07:50:06 【问题描述】:

我在匹配 Oracle PL/SQL 中的正则表达式时遇到问题。 更具体地说,问题在于正则表达式不想匹配任何零出现。 例如,我有类似的东西:

select * from dual where regexp_like('', '[[:alpha:]]*');

这不起作用。但如果我在这句话中加空格:

select * from dual where regexp_like(' ', '[[:alpha:]]*');

它有效。

我想让第一个示例运行,这样该人就不必为它工作而放置“空间”。 感谢您提供任何帮助,并感谢您的宝贵时间。

T

【问题讨论】:

【参考方案1】:

对于better or worse,Oracle中的空字符串被视为NULL:

SQL> select * from dual where '' like '%';

DUMMY
-----

在使用 Oracle 查询时考虑到这一点:

SQL> SELECT *
  2    FROM dual
  3   WHERE regexp_like('', '[[:alpha:]]*')
  4      OR '' IS NULL;

DUMMY
-----
X

【讨论】:

【参考方案2】:

Oracle 是否仍将空字符串视为 NULL?如果是这样,带有 NULL 输入源字符串的 regexp_like 是否返回 UNKNOWN?这两个都是半合理的,也是您的测试无法按预期工作的原因。

【讨论】:

以上是关于PL/SQL Oracle 正则表达式对于零的出现不起作用的主要内容,如果未能解决你的问题,请参考以下文章

用于转换为 oracle pl/sql 的电子邮件的 salesforce 正则表达式

PL/SQL 正则表达式检查

为了对存储在 Oracle db 中的数据运行搜索查询,在 PL/SQL 中使用 REGEXP 是不是比在 Java 正则表达式中获取所有数据并过滤它更快?

如何在 Pl/SQL 中编写正则表达式匹配模式?

正则表达式背后的 pl/sql 否定查看

Python 正则表达式拆分 PL/SQL 指令