0

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

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

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

我正在使用这部分查询:

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

过滤掉以 20、216、213、218、212 和 249 开头的行,或以这些前缀开头的行,前面是 2(例如 220、2216、2213 等),但在结果中我是还获取以 2355 开头的记录。

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

一些帮助将不胜感激。

附言

我知道我可以使用一系列“ or column_name like...”,但我认为使用正则表达式会是一个更好的解决方案

4

1 回答 1

1

您正在使用?并且*不正确。改用这个:

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

你不需要?并且你需要使用.*这意味着“任何字符(新行除外),在零到无限次之间”

于 2015-11-25T15:08:18.150 回答