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

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

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

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

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

它有效。

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

T

【问题讨论】:

    标签: regex oracle plsql


    【解决方案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?这两个都是半合理的,也是您的测试无法按预期工作的原因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-10
        • 2014-04-11
        • 2014-03-23
        • 2014-07-27
        • 2011-01-23
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多