1

私はOracle DBを使用しており、特定のパターンに一致する文字列内のすべての出現を見つけて抽出しようとしています...

3文字、3数字、そしておそらく文字かどうかであるはずです

私はこれを試しました:

SELECT REGEXP_SUBSTR(my_column, '[A-Za-z]{3}(\d)(\d)(\d)') AS values 
FROM my_table

ただし、最初に出現したもののみを返します。

使用する

REGEXP_SUBSTR(my_column, '[A-Za-z]{3}(\d)(\d)(\d)', 0, 0, 'i')

どちらも機能しません

誰にもアイデアはありますか?

編集:

PLSQLファイルから抽出しようとしています。したがって、次のような SQL クエリとほとんど同じです。

select * 
from abc123 
where some_value = 'some_value'
4

2 に答える 2

3

このクエリを試して、 ABC123CDE456FGHI789 シーケンスを壊してください

with mine as (select 'ABC123CDE456FGH789' hello from dual) 
select regexp_substr(hello, '[A-Za-z]{3}(\d){3}', 1, level) STR from mine
connect by regexp_substr(hello, '[A-Za-z]{3}(\d){3}', 1, level) is not null

出力

ABC123
CDE456
GHI789

特定の位置を取得するには、使用したい

select regexp_substr('ABC123CDE456FGH789', '[A-Za-z]{3}(\d){3}', 1, i) STR from dual

のような位置ごとに i 値を変更します

select regexp_substr('ABC123CDE456FGH789', '[A-Za-z]{3}(\d){3}', 1, 1) STR from dual

出力:

ABC123
于 2016-08-03T09:26:26.573 に答える