我试图将无序序列(列表)插入到此处说明的2种表中:
INT
列INT
列(我将用它来插入数据)所以,这是一个例子;
清单; (1,3,55,3,56456,45) 表; (价值INT)
我不是在寻找任何解决方案,而是一个不包括解析,拆分等的解决方案。'操作
预期解决方案:
INSERT INTO Table(Value)
VALUES(anyList)
预期解决方案2:
INSERT INTO Table(Value)
VALUELIST(anyList)
OR 插入表(值) VALUETABLE(anyList)
答案 0 :(得分:2)
您不能直接插入如下。
INSERT INTO Table(Value)
VALUES (1, 3, 55, 3, 56456, 45)
您将收到以下错误。
消息110,级别15,状态1,行1中的列数较少 INSERT语句比VALUES子句中指定的值。该 VALUES子句中的值数必须与列数匹配 在INSERT语句中指定。
如果您提供以下内容,SQL Server将仅接受您的插入。
INSERT INTO Table(Value)
VALUES (1),(3),(55), (3), (56456), (45)
如果您将列表作为字符串获取,在这种情况下,您需要在插入之前将其转换为适当的格式,如下所示。
DECLARE @xml as xml
DECLARE @list as varchar(max)
SET @list='(1, 3, 55, 3, 56456, 45)'
set @list = REPLACE(REPLACE(@list,'(',''),')','')
SET @xml = cast(('<X>'+replace(@list,',' ,'</X><X>')+'</X>') as xml)
INSERT INTO [Table](Value)
SELECT N.value('.', 'int') as value FROM @xml.nodes('X') as T(N)