2
select * from responses
帶來:在列轉換CSV記錄多行
2 | user_name | green,red
我可以更改查詢,以便它帶來它的格式如下?:
2 | user_name |green
2 | user_name |red
數量在第三CSV值列從記錄到記錄各不相同。
select * from responses
帶來:在列轉換CSV記錄多行
2 | user_name | green,red
我可以更改查詢,以便它帶來它的格式如下?:
2 | user_name |green
2 | user_name |red
數量在第三CSV值列從記錄到記錄各不相同。
我不確定使用的mysql語法,如果這甚至可能在mysql中,但我知道它可能在SQL Server(tsql)中,因爲我以前做過(不...我沒有代碼)。
高級過程。
基於逗號分割字符串的函數(應該使其更通用)。該函數應該返回一個表(如果可能的話,或者寫入某個臨時表,並且可能返回臨時表的名稱)。
的臨時表將每個CSV項目
1排然後你就可以加入你的數據與此臨時表設置爲得到你想要的。
這將不得不寫在我想象的存儲過程中。我敢打賭,這也是一種在遞歸CTE中做到的方法。
我的TSQL拆分函數的代碼如下。你看到我傳入了一個join_value變量,這個變量可能是你的用戶名。
ALTER FUNCTION [common].[split_string](@String varchar(8000), @Delimiter char(1), @join_value bigint)
returns @temptable TABLE (items varchar(8000), join_value bigint)
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(items, join_value) values(rtrim(ltrim(@slice)), @join_value)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end