我有一个包含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)
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)
从 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)