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.
Gilt für:SQL Server
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 atomisierten Werte, die an distinct-values() übergeben werden, müssen Untertypen desselben Basistyps sein. Basistypen, die akzeptiert 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() empfängt 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 leer und ein statischer Fehler ausgelöst.
Werte vom Typ xs:string werden mit der Unicode-Codepunkt-Standardsortierung von XQuery verglichen.
Beispiele
Dieses Thema enthält XQuery-Beispiele für XML-Instanzen, die in verschiedenen XML-Typspalten in der AdventureWorks-Datenbank gespeichert sind.
A. Verwenden der distinct-values()-Funktion zum Entfernen doppelter Werte aus der Sequenz
In diesem Beispiel wird einer XML-Typvariablen eine XML-Instanz zugewiesen, die Telefonnummern enthält. Die für diese Variable angegebene XQuery verwendet die Funktion distinct-values() zum Kompilieren einer Liste von Telefonnummern, die keine Duplikate enthalten.
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 Funktion distinct-values() ü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 Funktion distinct-values() ordnet ganzzahlige Werte xs:decimal zu.
Die Funktion distinct-values() unterstützt nur die zuvor erwähnten Typen und unterstützt nicht die Mischung von Basistypen.
Die Funktion distinct-values() für xs:duration-Werte wird nicht unterstützt.
Die Option syntactic, die eine Sortierung bereitstellt, wird nicht unterstützt.
Weitere Informationen
XQuery Functions against the xml Data Type (XQuery-Funktionen für den xml-Datentyp)