oracleで正規表現を使用して文字列操作
regexp_substr、regexp_replaceなどを使って、カンマくぐりの文字列を
文字列の編集編集、部分文字列を取り出し、文字列の置換をしています。
要は、先頭、2番目、3番目、・・・・、最後と、そのカンマで区切られた
値をそれぞれ取り出したいのですが、どうしてもカンマが残ってしまいます。
以下、実際試したことです。
先頭
select regexp_substr('aaa,bbb,ccc,ddd','(^[^,]+)') from dual;
select regexp_substr(',aaa,bbb,ccc,ddd','(^,[^,]+)') from dual;
最後
select regexp_substr('aaa,bbb,ccc,ddd',',([^,]+)$') from dual;
select regexp_substr(',aaa,bbb,ccc,ddd',',([^,]+)$') from dual;
中間
select regexp_substr('aaa,bbb,ccc,ddd',',([^,]+)',1) from dual;
select regexp_substr('aaa,bbb,ccc,ddd',',([^,]+)',1,2) from dual;
select regexp_substr(',aaa,bbb,ccc,ddd',',([^,]+)',1,2) from dual;
select regexp_substr(',aaa,bbb,ccc,ddd',',([^,]+)',1,3) from dual;
良い方法ないでしょうか。
また、regexp_replaceでも実現したいです。
よろしくお願いします。
お礼
そういえばJSP(JavaServerPage)に書いてました。 JSPでは${XXX}でJavaのデータを出力するので、そのせいですね。 すっかり忘れてました。ありがとうございます。