0

オラクルで

アンダースコアとドットの間の数字を表示したい

例: pSE1001335806_ 17950 .dat したがって、列は = 17950 になります。

ただし、 pSE1001311462_ 4558 .dat の場合、列は = 4558 になります

どうやってやるの????

4

2 に答える 2

0

これには正規表現を使用できます。それを一般化して英数字の 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
于 2013-04-15T09:38:30.233 に答える