0

こんにちは、任意の順序で文字列にランダムに発生するパターンを見つける必要があります

列の値は次のようになります

'k=34,n=WER-RTN,l=hy33,z=device'

'k=34,l=hy33,z=device,n=WER-RTN'

'n=WER-RTN,l=hy33,z=device,k=34'

n= until ',' に対して値を取得する必要があります。それ以外の場合は、最後まで最後まで発生します。ただし、n は文字列のどこにでも出現する可能性があります。

4

1 に答える 1

1

値を取得したい場合はWER-RTN、次のような正規表現でその値を抽出できます。

WITH t AS (SELECT 'k=34,n=WER-RTN,l=hy33,z=device' text FROM dual
           UNION
           SELECT 'k=34,l=hy33,z=device,n=WER-RTN' text FROM dual
           UNION
           SELECT 'n=WER-RTN,l=hy33,z=device,k=34' text FROM dual)
SELECT REPLACE(REPLACE(REGEXP_SUBSTR(text,'(n=.+?,)|(n=.+?$)'),'n='),',')
FROM t

Oracle 11g 以降を使用している場合は、少し単純化できます。

REGEXP_SUBSTR (text, '(^|,)n=([^,]+)', 1, 1, '', 2)
于 2015-11-20T10:24:08.610 に答える