1

私は次のような文字列を持っています:

var = This a string, [This is another string]

PLSQLでこれらをこのようなものに分割してもらいたい

var1 = This is string
var2 = This is another string

次のような場合は、コンマを含めないでください。

, [

基本的に、これは別の文字列があるかどうかを決定します。

どうすればいいですか?

前もって感謝します :-)

4

2 に答える 2

3

SUBSTRとの組み合わせを使用してINSTR、文字列を分割できます。たとえば、最初の文字列を取得するには、次の行に沿って何かを使用できます。

SELECT NVL(SUBSTR(var, 1, INSTR(var, ',') - 1), var)
FROM dual;

つまり、区切り文字(INSTR(var, ','))のインデックスを見つけてから、を使用SUBSTRしてそのインデックスまでのすべてをキャプチャします。同じことが2番目の文字列にも当てはまります。

于 2012-08-15T12:54:02.697 に答える
2

私はあなたの構文解析要件について100%明確ではありませんが、これはあなたが望むものを与えると思います。

var1 := regexp_replace( var, '^([^[,]*).*$', '\1')
var2 := regexp_replace( var, '^[^[]*(\[([^]]*)\])?.*$', '\2')

これは、正規表現関数をテストするSQLフィドルです。

また、正規表現ソリューションと他の方法のパフォーマンスについてもよくわかりません。

于 2012-08-15T14:42:02.917 に答える