回答受付が終了しました

ストアドプロシージャ【SQL Server2012】について質問です。 以下のテーブル・カラムから以下のようなデータをSELECTしたいですが、どのような構文にすれば、取得できるでしょうか?

ストアドプロシージャ【SQL Server2012】について質問です。 以下のテーブル・カラムから以下のようなデータをSELECTしたいですが、どのような構文にすれば、取得できるでしょうか? テーブル:A、カラムa、カラムb カラムbには「;」の文字列があり、「;」区切り ⇒イメージ ■テーブルA カラムa カラムb テスト 1;10;100 あいう 5;50 えお 20 これを、以下のように。 カラムa カラムb テスト 1 テスト 10 テスト 100 あいう 5 あいう 50 えお 20 SQL2012なので、string_split関数は使えない。。

SQL Server7閲覧

回答(1件)

0

select a,substring(b,1,case charindex(';',b) when 0 then len(b) else charindex(';',b)-1 end) from A union all select a,substring(b,charindex(';',b)+1 ,case charindex(';',b,charindex(';',b)+1) when 0 then len(b) else charindex(';',b,charindex(';',b)+1)-3 end) from A where charindex(';',b)<>0 union all select a,substring(b,charindex(';',b,charindex(';',b)+1)+1 ,case charindex(';',b,charindex(';',b,charindex(';',b)+1)+1) when 0 then len(b) else charindex(';',b,charindex(';',b)+1)-3 end) from A where charindex(';',b,charindex(';',b)+1)<>0 order by 1,2 です。このように大変なSQL文となってしまうので、最初から、検索結果のようにデータを持たせます。

ありがとうございます。 ただし、1つ補足としまして、 カラムBの「;」は数が可変で、例は2つしか記載していませんが、 3つ、4つの場合もあります。10個の場合も。(数は分からない)