0

必要な出力

String
abc
bbbc
cdd

私はこれを試しましたが、うまくいきません。

create procedure CSVtoROWS(in 'str' varchar(50))

begin 
declare i int;
declare j int;
declare temp_str varchar(50);
/*find number of words in given string which is equal to rows*/ 

set i= length(str)-length(replace(str,',',''))+1;

set j=1;

drop table if exists #tabQ1
create table #tabQ1
    (
     String varchar(50) null default null
    );
while(j<=i) do
set temp_str=LEFT(str,charIndex(',',str)-1,len(str))
set str= SUBSTRING(str,(CHARINDEX(',', @StringInput),
                             LEN(@StringInput)) + 1, LEN(@StringInput))
insert into tabQ1
values(temp_str);
setj=j+1;
End while;
select * from TableforQ1;   
END 
4

2 に答える 2

0

次のようなことを試すことができます:

create procedure CSVtoROWS
  @S varchar(50)
as

declare @T table(string varchar(50))

while len(@S) > 0
begin
  insert into @T values(left(@S, charindex(',', @S+',')-1))
  set @S = stuff(@S, 1, charindex(',', @S+','), '')
end

select string from @T

または、選択した文字列分割関数を使用できます。
文字列を正しい方法で、または次善の方法で分割する

于 2013-06-17T05:56:24.877 に答える