オラクルで
アンダースコアとドットの間の数字を表示したい
例: pSE1001335806_ 17950 .dat したがって、列は = 17950 になります。
ただし、 pSE1001311462_ 4558 .dat の場合、列は = 4558 になります
どうやってやるの????
オラクルで
アンダースコアとドットの間の数字を表示したい
例: pSE1001335806_ 17950 .dat したがって、列は = 17950 になります。
ただし、 pSE1001311462_ 4558 .dat の場合、列は = 4558 になります
どうやってやるの????
これには正規表現を使用できます。それを一般化して英数字の 2 番目のブロックにすることができれば、次のように簡単に機能します。
regexp_substr(<value>, '([[:alnum:]]+)', 1, 2)
サンプル値を生成するための CTE を使用します。
with files as
(
select 'pSE1001335806_17950.dat' as filename from dual
union all select 'pSE1001311462_4558.dat' from dual
)
select regexp_substr(filename, '([[:alnum:]]+)', 1, 2)
from files;
REGEXP_SUBSTR(FILENAME,'([[:ALNUM:]]+)',1,2)
--------------------------------------------------------------------------------
17950
4558