我有一个查询,我在Access数据库中使用以匹配字段。我想要检索的行有一个字段,其中包含两种可能形式的字符序列(不区分大小写):
*PO12345
,前面有*PO
或PO12345
,前面有PO
的5个数字。在Access中我通过以下方式实现了这一目标:
WHERE MyField LIKE '*PO#####*'
我试图复制查询以便在Oracle数据库中使用:
WHERE REGEXP_LIKE(MyField, '/\*+PO[\d]{5}/i')
但是,它不会返回任何内容。我稍微修改了正则表达式,例如在PO
周围放置括号,但无济于事。据我所知,我所写的是正确的。
答案 0 :(得分:4)
您的正则表达式\*+PO[\d]{5}
是错误的。 +
之后不应该\*
,因为它是可选的。
使用?
这样/\*?PO\d{5}/i
可以解决问题。
使用i
(不区分大小写)作为参数,如下所示:REGEXP_LIKE (MyField, '^\*?PO\d{5}$', 'i');
的 Regex101 Demo 强>