1

コンマ区切り文字が文字列の一部である場合に正しい値を取得するために、以下のクエリを変更する方法は?

SELECT REGEXP_SUBSTR('141001,update PRDTBL set a10=''141001'' where A03=''62'' and FIX_FLT=''1'' AND SUBSTR(TXN_ID,1,2)=''LN'' AND A05=''N'',62,1,LN,,,,N,FXL BUSINESS (M),FIXED LOANS - OTHERS,,DBA,2013-09-25,DBA,2013-09-25', 
'([^,]*)(,|$)', 1,2, 'i', 1)
FROM DUAL

上記のクエリは値を返します:

update portfldb set a10='141001' where A03='62' and FIX_FLT='1' AND  SUBSTR(TXN_ID  

期待値は次のとおりです。

update portfldb set a10='141001' where A03='62' and FIX_FLT='1' AND SUBSTR(TXN_ID,1,2)='LN' AND A05='N'
4

1 に答える 1

0

ステートメントにネストされた括弧がない限り、次のようなものを試すことができます。

SELECT REGEXP_SUBSTR('141001,update PRDTBL set a10=''141001'' where A03=''62'' and FIX_FLT=''1'' AND SUBSTR(TXN_ID,1,2)=''LN'' AND A05=''N'',62,1,LN,,,,N,FXL BUSINESS (M),FIXED LOANS - OTHERS,,DBA,2013-09-25,DBA,2013-09-25', 
'([^,\(]*(\([^\)]*\)[^,\(]*)*)(,|$)', 1,2, 'i', 1)
FROM DUAL;

括弧がネストされている可能性がある場合、正規表現を使用してどこにも到達できません-運が悪いです:-(

于 2013-09-26T08:25:42.760 に答える