Oracle中的REGEXP_LIKE

时间:2016-03-09 16:49:07

标签: regex oracle

我有一个查询,我在Access数据库中使用以匹配字段。我想要检索的行有一个字段,其中包含两种可能形式的字符序列(不区分大小写):

  • *PO12345,前面有*PO
  • 的5位数字
  • PO12345,前面有PO的5个数字。

在Access中我通过以下方式实现了这一目标:

WHERE MyField LIKE '*PO#####*'

我试图复制查询以便在Oracle数据库中使用:

WHERE REGEXP_LIKE(MyField, '/\*+PO[\d]{5}/i')

但是,它不会返回任何内容。我稍微修改了正则表达式,例如在PO周围放置括号,但无济于事。据我所知,我所写的是正确的。

1 个答案:

答案 0 :(得分:4)

您的正则表达式\*+PO[\d]{5}是错误的。 +之后不应该\*,因为它是可选的。

使用?这样/\*?PO\d{5}/i可以解决问题。

使用i(不区分大小写)作为参数,如下所示:REGEXP_LIKE (MyField, '^\*?PO\d{5}$', 'i');

Regex101 Demo

Read REGEXP_LIKE documentation.