【发布时间】:2018-05-04 12:01:22
【问题描述】:
-
我有一个表 tb1,其中有一列 OppName 为:(8-values in 一行 csv)
["OpportunityName","Fact","","","StartDate","EndDate","IsActive","UpdateDate"]我正在尝试将每个逗号分隔的值拆分为单独的 列为:
c1 c2 c3 c4 c5 c6 c7 c8 "OpportunityName" "Fact" ......... "UpdateDate"我所做的是:
第 1 步: 从字符串中删除 [] 为:
UPDATE tb1 SET [OppName] = REPLACE(REPLACE([OppName], '[', ''), ']', '') # output: "OpportunityName","Fact","","","StartDate","EndDate","IsActive","UpdateDate"第 2 步: 在 vars 中拆分字符串并将所有 vars 插入到 tb2 中的每一行:
DECLARE @list varchar(8000) DECLARE @pos INT DECLARE @len INT DECLARE @value varchar(8000) DECLARE @x nvarchar(max) SET @list = '"OpportunityName","Fact","","","StartDate","EndDate","IsActive","UpdateDate",' set @pos = 0 set @len = 0 WHILE CHARINDEX(',', @list, @pos+1)>0 BEGIN set @len = CHARINDEX(',', @list, @pos+1) - @pos set @value = SUBSTRING(@list, @pos, @len) set @value = REPLACE (@value, '"', '') PRINT @value -- for debug porpose set @pos = CHARINDEX(',', @list, @pos+@len) +1 --Append values to x set @x = (@x +','+ @value) END PRINT @x --Inserting in tb2 Insert into tb2 values(@x)但字符串连接不正确
有人可以帮我吗
【问题讨论】:
-
您是否检查过您的字符串中是否有逗号?例如“事实,事实2,事实3”?这会打破你的分裂方法。此外:您如何处理这些记录?是通过 SSIS 之类的 ETL 吗?在这种情况下,我建议使用 C# Split 函数。
标签: sql-server string split