拆分逗号分隔字符串并插入表(int)

use*_*556 18 sql-server

我有一个包含3列的表(First_ID,Second_ID,Third_ID)所有列都是int列.

现在我有3个值,第一个和第三个值是int值(1和0),第二个值是逗号分隔的字符串('188,189,190,191,192,193,194')

我应该如何填充表格,如下所示:

1   188 0
1   189 0
1   190 0
1   191 0
1   192 0
1   193 0
1   194 0
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法,但无法按照我的意愿使用它.

提前致谢

Jom*_*rge 19

更好地使用XML,

Declare @Var nvarchar(MAX)

Set @Var ='188,189,190,191,192,193,194'

DECLARE @XML AS XML

DECLARE @Delimiter AS CHAR(1) =','

SET @XML = CAST(('<X>'+REPLACE(@Var,@Delimiter ,'</X><X>')+'</X>') AS XML)

DECLARE @temp TABLE (ID INT)

INSERT INTO @temp

SELECT N.value('.', 'INT') AS ID FROM @XML.nodes('X') AS T(N)

SELECT * FROM @temp
Run Code Online (Sandbox Code Playgroud)

  • 完美无需创建数据库功能,非常适合一次性任务 (2认同)

M.A*_*Ali 15

使用Split()您在评论中提到的功能,

-- Variable holding comma separated values
DECLARE @Var VARCHAR(4000);
SET @Var =  '188,189,190,191,192,193,194'

-- Test Target Table
DECLARE @Target_Table TABLE  (First_ID INT,Second_ID INT,Third_ID INT) 

-- Insert statement
INSERT INTO @Target_Table
SELECT 1, CAST(Items AS INT) , 0 
FROM  dbo.Split(@Var, ',')  

-- Test Select
SELECT * FROM  @Target_Table  
Run Code Online (Sandbox Code Playgroud)

结果集

???????????????????????????????????
? First_ID ? Second_ID ? Third_ID ?
???????????????????????????????????
?        1 ?       188 ?        0 ?
?        1 ?       189 ?        0 ?
?        1 ?       190 ?        0 ?
?        1 ?       191 ?        0 ?
?        1 ?       192 ?        0 ?
?        1 ?       193 ?        0 ?
?        1 ?       194 ?        0 ?
???????????????????????????????????  
Run Code Online (Sandbox Code Playgroud)

  • Split不是SQL Server中的函数.使用SQL Server 2012.我是否需要做任何特殊的事情 (7认同)
  • 没有SQL Server函数split() (6认同)

Rol*_*n C 7

从 SQL Server 2016 开始您可以使用此功能string_split

DECLARE @Var VARCHAR(4000);
SET @Var =  '188,189,190,191,192,193,194'

SELECT 1 as First_ID, value as Second_ID ,0 as Third_ID FROM string_split(@Var,',')
Run Code Online (Sandbox Code Playgroud)