Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Entfernt doppelte Werte aus der durch $arg angegebenen Sequenz. Wenn $arg eine leere Sequenz ist, gibt die Funktion die leere Sequenz zurück.
Syntax
fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType*
Argumente
- $arg
Sequenz der atomaren Werte.
Hinweise
Alle Typen der atomaren Werte, die an distinct-values() übergeben werden, müssen Untertypen des gleichen Basistyps sein. Basistypen, die angenommen werden, sind die Typen, die den eq-Vorgang unterstützen. Diese Typen sind z. B. die drei integrierten numerischen Basistypen, die date/time-Basistypen, xs:string, xs:boolean und xdt:untypedAtomic. Werte des Typs xdt:untypedAtomic werden in xs:string umgewandelt. Wenn eine Mischung dieser Typen vorliegt oder andere Werte anderer Typen übergeben werden, wird ein statischer Fehler ausgelöst.
Das Ergebnis von distinct-values() erhält den Basistyp der übergebenen Typen, z. B. xs:string im Fall von xdt:untypedAtomic, mit der ursprünglichen Kardinalität. Wenn die Eingabe statisch leer ist, wird dies angegeben und ein statischer Fehler ausgegeben.
Werte vom Typ xs:string werden mit der Unicode-Codepunkt-Standardsortierung von XQuery verglichen.
Beispiele
Dieses Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten vom xml-Datentyp in der AdventureWorks-Datenbank gespeichert sind.
A.Verwenden der distinct-values()-Funktion zum Entfernen doppelter Werte aus der Sequenz
In diesem Beispiel wird eine XML-Instanz, die Rufnummern enthält, einer Variablen vom Typ xml zugewiesen. Die für diese Variable angegebene XQuery verwendet die distinct-values()-Funktion, um eine Liste von Rufnummern zu kompilieren, die keine doppelten Werte enthält.
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
Dies ist das Ergebnis:
111-111-1111 222-222-2222
In der folgenden Abfrage wird eine Sequenz von Zahlen (1, 1, 2) an die distinct-values()-Funktion übergeben. Die Funktion entfernt anschließend die doppelten Werte in der Sequenz und gibt die beiden verbleibenden Werte zurück.
declare @x xml
set @x = ''
select @x.query('
distinct-values((1, 1, 2))
') as result
Die Abfrage gibt 1 2 zurück.
Implementierungseinschränkungen
Die folgenden Einschränkungen sind zu beachten:
Die distinct-values()-Funktion ordnet ganzzahlige Werte xs:decimal zu.
Die distinct-values()-Funktion unterstützt nur die zuvor aufgeführten Typen und keine Mischung der Basistypen.
Die distinct-values()-Funktion wird für Werte des Typs xs:duration nicht unterstützt.
Die Option syntactic, die eine Sortierung bereitstellt, wird nicht unterstützt.