我有一个 SQL 查询返回以下结果:
Id language
1. English, French, spanish
2. English, English, spanish
3. French, French, English
我不想有重复的语言值,所以如果我有两种英语,我只需要显示一种,所以结果应该是这样的:
Id language
1. English, French, spanish
2. English, spanish
3. French, English
如何在 SQL 中做到这一点?
最佳答案
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
评论后:如果我添加了这一行:插入@temp值(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;
关于sql - SQL 中一列的不同逗号分隔值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32670981/