Regex PL/SQL Oracle正则表达式不';如果出现零,则不工作

Regex PL/SQL Oracle正则表达式不';如果出现零,则不工作,regex,oracle,plsql,Regex,Oracle,Plsql,我在Oracle PL/SQL中匹配正则表达式时遇到问题。 更具体地说,问题是正则表达式不希望匹配任何零出现。 例如,我有一些类似于: select * from dual where regexp_like('', '[[:alpha:]]*'); 这不管用。但如果我在这句话中留点空白: select * from dual where regexp_like(' ', '[[:alpha:]]*'); 它起作用了 我想让第一个例子运行,这样这个人就不必给它留出空间。 非常感谢您的帮助,谢

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

select * from dual where regexp_like('', '[[:alpha:]]*');
这不管用。但如果我在这句话中留点空白:

select * from dual where regexp_like(' ', '[[:alpha:]]*');
它起作用了

我想让第一个例子运行,这样这个人就不必给它留出空间。 非常感谢您的帮助,谢谢您抽出时间


T

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

对于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