sql把行帶有逗號的轉化爲列-塵緣暉
一、 轉列函數創建:
create function func_splitstring --字符串參數 --逗號參數
(@str nvarchar(max), @split varchar(10)) --把表值函數的返回值賦值一個變量 函數返回一個表
returns @t Table (c1 varchar(100))
as
begin
declare @i int declare @s int
set @i=1
set @s=1
while(@i>0)
begin
set @i=charindex(@split,@str,@s)
if(@i>0) begin
insert @t(c1) values(substring(@str,@s,@i-@s))
end
else
begin
insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))
end
set @s=@i+1
end
return
end
二、測試
declare @ItemNo varchar(1000)
set @ItemNo='1001611160588646,1001611160588634'
--select * from CBO_ItemMaster where Convert(varchar(1000),ID) in(@ItemNo)
select * into #tb from ( select 1 as ID, REPLACE(@ItemNo,'','') ItemID) tb
select * from #tb
select * from dbo.func_splitstring((select ItemID from #tb where ID=1),',')
create function func_splitstring --字符串參數 --逗號參數
(@str nvarchar(max), @split varchar(10)) --把表值函數的返回值賦值一個變量 函數返回一個表
returns @t Table (c1 varchar(100))
as
begin
declare @i int declare @s int
set @i=1
set @s=1
while(@i>0)
begin
set @i=charindex(@split,@str,@s)
if(@i>0) begin
insert @t(c1) values(substring(@str,@s,@i-@s))
end
else
begin
insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))
end
set @s=@i+1
end
return
end
二、測試
declare @ItemNo varchar(1000)
set @ItemNo='1001611160588646,1001611160588634'
--select * from CBO_ItemMaster where Convert(varchar(1000),ID) in(@ItemNo)
select * into #tb from ( select 1 as ID, REPLACE(@ItemNo,'','') ItemID) tb
select * from #tb
select * from dbo.func_splitstring((select ItemID from #tb where ID=1),',')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.