Tsql插入无序序列

时间:2018-03-08 05:30:04

标签: sql sql-server tsql insert sequence

我试图将无序序列(列表)插入到此处说明的2种表中:

  1. 表格有一个INT
  2. 表有几列,其中一列是INT列(我将用它来插入数据)
  3. 所以,这是一个例子;

    清单; (1,3,55,3,56456,45) 表; (价值INT)

    我不是在寻找任何解决方案,而是一个不包括解析,拆分等的解决方案。'操作

    预期解决方案:

    INSERT INTO Table(Value)
    VALUES(anyList)
    

    预期解决方案2:

    INSERT INTO Table(Value)
    VALUELIST(anyList)
    

    OR     插入表(值)     VALUETABLE(anyList)

1 个答案:

答案 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)