刚刚考虑过这种情况,其中一列有数据' A,B,C,D,A,B,E,D'应该被删除为“A,B,C,D,E'”。我可以考虑通过分割分隔值,重复数据删除和重新分配来分两步完成。我不确定是否有任何简单的方法来实现这一目标,我是否遗漏了任何明显的东西?
答案 0 :(得分:1)
在SQL Server上我会做这样的事情(基于this article):
DECLARE @TEXT nvarchar(400) = 'A,B,A,C,D,B,D';
DECLARE @DEDUPTEXT nvarchar(400);
WITH Split(stpos,endpos)
AS(
SELECT 0 AS stpos, CHARINDEX(',',@text) AS endpos
UNION ALL
SELECT endpos+1, CHARINDEX(',',@text,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT @DEDUPTEXT = COALESCE(@DEDUPTEXT+ ',', '') + [Data]
FROM (
SELECT DISTINCT
'Data' = SUBSTRING(@text,stpos,COALESCE(NULLIF(endpos,0),LEN(@text)+1)-stpos)
FROM Split ) dedup
SELECT @DEDUPTEXT
它基本上完成了你在问题中描述的内容。 不确定这对你是否有帮助,请随时关注 - 我最终会将其删除。