日期:2014-05-19  浏览次数:20642 次

关于一个insert数据库的sql
我现在有个数组A={1,2,3,4,5,6,7,8}
现要求把这个数组里的每一个数据作为一条记录一次性全部添加到表T里;
请问有没什么比较好的方法,谢谢;

对了,A里的数据是可变的,可能会比较大


------解决方案--------------------
declare @AllChar varchar(50)
declare @FirstChar varchar(50)
declare @FirstPoint int
declare @lenth int

set @AllChar= '1,2,3,4,5,6,7,8 ' ----可以传入一个字符串
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)
--select @FirstChar
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 * from #Temp_String
------解决方案--------------------

create table T(col int)

declare @str varchar(20)
set @str= '1,2,3,4,5,6,7,8 '
declare @sql varchar(8000)
set @sql= 'insert T select col= ' ' '
select @sql=@sql+replace(@str, ', ', ' ' ' union all select ' ' ')+ ' ' ' '
exec(@sql)

select * from T

--result
col
-----------
1
2
3
4
5
6
7
8

(8 row(s) affected)