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 から始まるレコードも取得しています。

正規表現で間違いを犯したと確信していますが、それを見つけることができません。

いくつかの助けをいただければ幸いです。

PS

一連の " or column_name like..." を使用できることはわかっていますが、正規表現を使用する方がより良い解決策になると思いました

4

1 に答える 1

1

?と を*間違って使用しています。代わりにこれを使用してください:

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

「任意の文字 (改行を除く)、ゼロから無制限の回数」を意味する必要はなく?、使用する必要があります。.*

于 2015-11-25T15:08:18.150 に答える