簡體   English   中英

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

[英]Distinct comma seperated value for one column in SQL

我在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

注釋后如果我添加了此行: 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;

現在,它可以很好地進行排序並獲得不同的值:

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')
insert into @temp values (4,'English, English, English')

select Id,
REPLACE( cast(cast('<d>'+ replace(languag, ', ','</d><d>')+'</d>'  as xml)
.query('for $a in distinct-values(/d) order by $a return $a') as varchar), ' ', ', ')AS [language]
from @temp

謝謝@tinka

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM