2

正規表現を使用して、文字列の最後の値を取得しようとしています。解析しようとしているデータの例をコピーしました。私はオラクルの構文を使用しています。

サンプルデータ:

||CULTURE|D0799|D0799HTT|
||CULTURE|D0799|D0799HTT||

パイプの最後のセットの前に最後の値を削除しようとしています:

D0799HQTT 
D0799HQTT

CULTURE を返す regexp_substr を作成できます。

REGEXP_SUBSTR(c.field_name, '|[^|]+|')

しかし、最後に 1 つまたは 2 つのパイプを探して、探している値を返す方法を見つけることができませんでした。さらに情報が必要な場合はお知らせください。

4

4 に答える 4

3

これを試すことができます:

select rtrim(regexp_substr('||CULTURE|D0799|D0799HTT||', 
                     '[[:alnum:]]+\|+$'), '|')
from dual;

またはこのように:

select regexp_replace('||CULTURE|D0799|D0799HTT||', 
                     '(^|.*\|)([[:alnum:]]+)\|+$', '\2')
from dual;

ここにsqlfiddleのデモがあります

于 2013-11-13T18:58:40.677 に答える
2

特定の文字セットに適合すると仮定するよりも、パイプではないすべての文字を引き出すのがおそらく最善です。

select regexp_replace(regexp_substr('||CULTURE SUBS|INTERNATIONAL TESTING S.A.|ISLAND TEST_PEACE|', '[^|]+\|+$'), '\|', '') from dual;
于 2013-11-13T19:46:07.807 に答える