![](/img/trans.png)
[英]SQL Server : Split a single column value comma seperated to multiple columns
[英]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中做到這一點?
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.