甲骨文中的"regexp-like"返回不准确的结果



在Oracle11中使用正则表达式检索列的正确数据时遇到问题。

该列的类型为varchar,如下所示:

2216xxxx
20xxxx
2355xxxx
2128xxxx
213xxxx
692xxxx

我正在使用这部分查询:

regexp_like (column_name, '^(?216*|?213*|?218*|?212*|?249*|?20*)')

过滤掉以20、216、213、218、212和249开头的行,或者以这些前缀开头的行(例如220、2216、2213等),但在结果中,我也得到了以2355开头的记录。

我确信我在正则表达式上犯了一些错误,但我找不到它。

如能提供帮助,我们将不胜感激。

p.S

我知道我可以使用一系列的"or column_name like...",但我认为使用regexs将是更好的解决方案

您使用?*不正确。改为使用这个:

^(216.*|213.*|218.*|212.*|249.*|20.*)

您不需要?,而需要使用.*,意思是"零到无限次数之间的任何字符(新行除外)"

最新更新