SQL中一列的逗号分隔值不同

Aym*_*oum 2 sql sql-server sql-server-2008

我在SQL中有一个查询返回以下结果:

Id language
1. English, French, spanish
2. English, English, spanish
3. French, French, English
Run Code Online (Sandbox Code Playgroud)

我不希望语​​言具有重复值,所以如果我有两种英语语言,我只需要显示一种,所以结果应该是这样的:

Id language
1. English, French, spanish
2. English, spanish
3. French, English
Run Code Online (Sandbox Code Playgroud)

我怎么能在SQL中做到这一点?

wir*_*ext 5

XQuery的

declare @temp table (Id int,languag nvarchar(33))

insert into @temp values (1,'English, French, spanish')
insert into @temp values (2,'English, English, spanish')
insert into @temp values (3,'French, French, English')

select Id,
cast(cast('<d>'+replace(languag, ', ',',</d><d>')+'</d>'  as xml).query('distinct-values(/d)') as varchar) AS [language]
from @temp
Run Code Online (Sandbox Code Playgroud)

评论后:如果我添加了这一行:insert into @temp values (4,'English, English, English')查询返回给我"英语,英语"

select Id,
REPLACE(cast(cast('<d>'+ replace(languag, ', ','</d><d>')+'</d>'  as xml)
.query('distinct-values(/d)') as varchar), ' ', ', ')AS [language]
from @temp;
Run Code Online (Sandbox Code Playgroud)