通过变量插入多行

时间:2015-12-30 05:46:12

标签: sql sql-server sql-insert

实际上我想在表格中插入多行。 表的结构是

Create Table tbl_username
(id int  autoincrement,
username varchar(100),
Primary key(id))

我尝试插入多行,如

Declare @s as varchar(100)
set @s='(''name1''),(''name2'')'
insert into tbl_username(username)values @s;

但我得到的输出为

id        username
1         (''name1''),(''name2'')

实际上我需要的输出是

id          username
1           name1
2           name2

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:6)

使用动态SQL

Declare @s as varchar(100)
Declare @sql as varchar(max)
set @s='(''name1''),(''name2'')'
set @sql = 'insert into tbl_username(username) values ' + @s;

execute(@sql);

但是我会尽可能避免使用动态SQL。 如果您的值不在变量中,则执行此操作的标准方法是:

INSERT INTO tbl_username(username) values ('name1'),('name2')

或者

INSERT INTO tbl_username(username) values ('name1')
INSERT INTO tbl_username(username) values ('name2')

如果可能,请选择上述之一,而不是最初提到的动态选项。

答案 1 :(得分:4)

insert into tbl_username(username)values ('name1'),('name2'),.....;

这里因为username是varchar类型所以它将@s视为单个值并将其插入一行。

答案 2 :(得分:2)

以下逻辑使用Calendars功能:

substring

请尝试:http://sqlfiddle.com/#!6/d0f76/1/0