我有字符串格式的输入值(用逗号分隔)。
customerID = "1,2,3,4,5"
如何将这些值插入到cutomerID
临时客户表的列中?
我有字符串格式的输入值(用逗号分隔)。
customerID = "1,2,3,4,5"
如何将这些值插入到cutomerID
临时客户表的列中?
实现此目的的一种方法是将要插入的值保存为 CSV。
然后创建一个临时表:MyTable
使用以下 TSQL 批量插入 CSV 的内容。确保更改文件路径。最后,运行注释掉的 select 语句来验证您的导入是否成功。
请注意,FIRSTROW 参数指定要加载的第一行的编号。默认为指定数据文件中的第一行。可能需要更改此值以适合 CSV 的布局。
创建表 MyTable ( CustomerID varchar(5) )
SET QUOTED_IDENTIFIER OFF
声明@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)
-- 从我的表中选择 *
试试这个——
询问:
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
谢谢德瓦特。这是另一种替代解决方案。谢谢大家帮助我。
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