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