将分隔的逗号值插入sql表中

时间:2013-06-24 15:30:30

标签: mysql sql sql-server database

我的输入值格式为string(用逗号分隔)。

customerID = "1,2,3,4,5"

如何将这些值插入临时客户表的cutomerID列?

3 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是将要插入的值保存为CSV。

然后创建一个临时表:MyTable

使用以下TSQL批量插入CSV的内容。确保更改文件路径。最后,运行注释掉的select语句以验证导入是否成功。

请注意,FIRSTROW参数指定要加载的第一行的编号。默认值是指定数据文件中的第一行。可能需要更改此值以适合CSV的布局。

  

创建表MyTable   (CustomerID varchar(5))

     

SET QUOTED_IDENTIFIER OFF

     

DECLARE       @SQL varchar(2000),       @path varchar(500)

     

SET @path ='C:\ Users \ VikrantShitole \ Desktop \ Test.csv'

SET @SQL = "BULK INSERT MyTable"
    + " FROM '" +   @path + "'"
    + " WITH ("
    + " FIELDTERMINATOR = ','"
    + " ,ROWTERMINATOR = '\n'"
    + " ,FIRSTROW = 2 "
    + ")"

EXEC(@SQL)
     

- SELECT * FROM MyTable

答案 1 :(得分:1)

试试这个 -

<强>查询:

DECLARE @customerID VARCHAR(20)
SELECT @customerID = '1,2,3,4,5'

SELECT customerID = t.c.value('@s', 'INT')
FROM (
    SELECT field = CAST('<t s = "' + 
          REPLACE(
                 @customerID + ','
               , ','
               , '" /><t s = "') + '" />' AS XML) 
) d
CROSS APPLY field.nodes('/t') t(c)
WHERE t.c.value('@s', 'VARCHAR(5)') != ''

<强>输出:

customerID
-----------
1
2
3
4
5

答案 2 :(得分:1)

谢谢Devart。这是另一种替代解决方案。谢谢大家的帮助。

    DECLARE @customerID varchar(max) = Null ;

  SET @customerID= '1,2,3,4,5'


     DECLARE @tempTble Table (
            customerID varchar(25) NULL);


while len(@customerID ) > 0
begin
  insert into @tempTble (customerID ) values(left(@customerID , charindex(',', @customerID +',')-1))
  set @customerID = stuff(@customerID , 1, charindex(',', @customerID +','), '')
end

select * from @tempTble