这样就好:alter procedure Proc_Splitchar (@AllChar varchar(8000)) as declare @FirstChar varchar(50) declare @FirstPoint int declare @lenth int begin set @lenth=len(@AllChar) create table #Temp_String(FID int identity,Content varchar(50)) set @FirstPoint=charindex(',',@AllChar)while( @FirstPoint>0) begin set @FirstChar=substring(@AllChar,0,@FirstPoint) insert into #Temp_String(Content) values (@FirstChar) set @AllChar=substring(@AllChar,@FirstPoint+1,@lenth) set @FirstPoint=charindex(',',@AllChar) end insert into #Temp_String(Content) values (@AllChar) select Content from #Temp_String end go exec Proc_Splitchar '1,2,3,5,2'----- Content1 2 3 5 2
T-SQL中没有数组. 你可以在数据库中建一个有key 和 Value 的Hash表.处理数据.
sql server中是没有数组的,如果需要可以如三楼所说用一个hashtable代替, 但一般如下一个循环即可: WHILE CHARINDEX(',',@s)>0 begin --LEFT(@s,CHARINDEX(',',@s)-1) 对这一块操作就是了! SET @s=STUFF(@s,1,CHARINDEX(',',@s),'') end
as
declare @FirstChar varchar(50)
declare @FirstPoint int
declare @lenth int
begin
set @lenth=len(@AllChar)
create table #Temp_String(FID int identity,Content varchar(50))
set @FirstPoint=charindex(',',@AllChar)while( @FirstPoint>0)
begin
set @FirstChar=substring(@AllChar,0,@FirstPoint)
insert into #Temp_String(Content) values (@FirstChar)
set @AllChar=substring(@AllChar,@FirstPoint+1,@lenth)
set @FirstPoint=charindex(',',@AllChar)
end
insert into #Temp_String(Content) values (@AllChar)
select Content from #Temp_String
end
go
exec Proc_Splitchar '1,2,3,5,2'-----
Content1
2
3
5
2
你可以在数据库中建一个有key 和 Value 的Hash表.处理数据.
但一般如下一个循环即可:
WHILE CHARINDEX(',',@s)>0
begin
--LEFT(@s,CHARINDEX(',',@s)-1) 对这一块操作就是了!
SET @s=STUFF(@s,1,CHARINDEX(',',@s),'')
end