Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.