2017-03-17 9 views
0

2つの列の文字列を区切りたいと思います。文字列(複数可)は、例えば異なるlenghに次のようになります。サブストリングのブラブ

@string1 = (10)123514512(20)123412(30)123421523 
@string2 = (10)12313123123123(30)351(21)324FE324F 

結果として、これらの2行は次のようになります。

(column1) |s (column2) |ss 
10  |s 123514512|ss 
20  |s 123412 |ss 
30  |s 123421523|ss 
10  |s 12313123123123|ss 
30  |s 351|ss 
21  |s 324FE324F|ss 

私は、substring関数でビットを再生しようとしたが、私はありません持っていますどのように前進するかを考えてください。なにか提案を?あなたの時間と知恵にとても感謝します。

答えて

0

PATINDEXおそらくあなたが探しているものです。各文字列に複数のパターンのインスタンスがあるので、whileループを使用する方法があります。 開始括弧の最初のインスタンスを見つけて、終了括弧の最初のインスタンスを見つけてから、部分文字列を使用します。ポインタをその部分文字列の長さに設定します。その後、繰り返します。

使用法:

select PATINDEX('%[(]%',colname) as indexOfOpen, PATINDEX('%[)]%',colname) as indexOfClose from table 

この答えを見てみましょう:https://dba.stackexchange.com/a/41976

+0

はあなたの助けのためにどうもありがとうございます、それは完全な答えではありませんでしたが、あなたは道に私を置きます。ご挨拶! – Octavio