-1

Oracle 11Gを使用しており、次の文字列を持つ次のフィールドNAMEがあります。

NAME
'String having ZT-01183 - App # 2'
'This String having AG-01183 with - Apps # 4'

次の正規表現を使用していますが、取得できるのは次のとおりです。ZT-01183-アプリ#2およびAG-01183と-アプリ#4。

CASE 
    WHEN REGEXP_LIKE(NAME, 'ZT-|AG-|having') 
    THEN regexp_replace(NAME, '^.*? having ','')
    END AS NEW_NAME

ステートメントの次の文字列のみを取得したいので、結果はAG-01183とZT-01183になります。私は代わりに持った後にすべてを手に入れています。どんな助けでも大歓迎です。

4

2 に答える 2

1

あなたが使用することができます

THEN regexp_replace(name, '.*having ([^ ]+).*', '\1')

編集:

後読みを使用するという私の最初のアイデアは、後読みを使用できないように見える Oracle によって台無しにされたようです。私の編集では、グループを使用して、あなたが望むように見えるものを取り戻します。

于 2013-03-03T23:51:33.650 に答える
0

Please try:

THEN regexp_substr(NAME, '[A-Z]{2}-[0-9]{5}')
于 2013-03-04T00:14:01.020 に答える