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

标签 sql sql-server sql-server-2008

我有一个 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 中做到这一点?

最佳答案

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

评论后:如果我添加了这一行:插入@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/

相关文章:

mysql - 我不能在 mysql 查询中使用 'time' 字?

sql - 如何在编辑后将文本框查询结果保存到数据库? - 微软 Access

sql-server - 在 SQL Server 中存储文章长度的文本 block 和标记

sql-server - 如何在sql存储过程中的 'In'子句中传递字符串数组

sql - 如何将插入的输出值分配给sql server中的变量?

sql - 将多个 "group by"组合成单个查询?

sql - BigQuery 使用新的 SQL 语法访问 CustomDimensions

sql-server - 删除查询在 SQL Server 中不起作用

SqlDataReader 在没有数据时获取行

sql - 更新每组单行