关于一个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)