Funktioner på sekvenser – distinkta värden

Gäller för:SQL Server

Tar bort dubbletter från sekvensen som anges av $arg. Om $arg är en tom följd returnerar funktionen den tomma sekvensen.

Syntax

  
fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType*  

Arguments

$arg
Sekvens av atomvärden.

Remarks

Alla typer av de atomiserade värden som skickas till distinct-values() måste vara undertyper av samma bastyp. Bastyper som accepteras är de typer som stödjer EQ-operationen . Dessa typer omfattar de tre inbyggda numeriska bastyperna, bastyperna datum/tid, xs:string, xs:boolean och xdt:untypedAtomic. Värden av typen xdt:untypedAtomic kastas till xs:string. Om det finns en blandning av dessa typer, eller om andra värden av andra typer skickas, utlöses ett statiskt fel.

Resultatet av distinct-values() får bastypen av passed in-typerna, såsom xs:sträng i fallet xdt:untypedAtomic, med den ursprungliga kardinaliteten. Om indata är statiskt tomma är tom underförstått och ett statiskt fel utlöses.

Värden av typ xs:string jämförs med XQuerys standard Unicode-kodpunktskollation.

Examples

Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika XML- typkolumner i AdventureWorks-databasen.

A. Att använda distinct-values()-funktionen för att ta bort dubbletter från sekvensen

I detta exempel tilldelas en XML-instans som innehåller telefonnummer till en xml-typvariabel . XQuery som anges mot denna variabel använder distinct-values() -funktionen för att sammanställa en lista med telefonnummer som inte innehåller dubbletter.

declare @x xml  
set @x = '<PhoneNumbers>  
 <Number>111-111-1111</Number>  
 <Number>111-111-1111</Number>  
 <Number>222-222-2222</Number>  
</PhoneNumbers>'  
-- 1st select  
select @x.query('  
  distinct-values( data(/PhoneNumbers/Number) )  
') as result  

Det här är resultatet:

111-111-1111 222-222-2222    

I följande fråga skickas en följd av tal (1, 1, 2) in till funktionen distinct-values(). Funktionen tar sedan bort dubbletten i sekvensen och returnerar de andra två.

declare @x xml  
set @x = ''  
select @x.query('  
  distinct-values((1, 1, 2))  
') as result  

Frågan ger 1 2.

Implementeringsbegränsningar

Det här är begränsningarna:

  • Funktionen distinct-values() avbildar heltalsvärden till xs:decimal.

  • Funktionen distinct-values() stöder endast de tidigare nämnda typerna och stöder inte blandningen av bastyper.

  • Funktionen distinct-values() på xs:duration-värden stöds inte.

  • Det syntaktiska alternativet som tillhandahåller en sortering stöds inte.