Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Usuwa wartości duplikatów z sekwencji określonej przez $arg. Jeśli $arg jest sekwencją pustą, funkcja zwraca ciąg pusty.
Syntax
fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType*
Arguments
$arg
Sekwencja wartości atomowych.
Remarks
Wszystkie typy atomizowanych wartości przekazywanych do różnych-wartości() muszą być podtypami tego samego typu bazowego. Akceptowane typy bazowe to te, które wspierają operację EQ . Te typy obejmują trzy wbudowane typy bazowe liczbowe, typy bazowe daty/godziny, xs:string, xs:boolean i xdt:untypedAtomic. Wartości typu xdt:untypedAtomic są przenoszone do xs:string. Jeśli istnieje kombinacja tych typów lub jeśli zostaną przekazane inne wartości innych typów, zostanie zgłoszony błąd statyczny.
Wynik distinct-values() otrzymuje typ bazowy typów przekazanych w wymiarze, takich jak xs:string w przypadku xdt:untypedAtomic, z pierwotną mocą mocy. Jeśli wejście jest statycznie puste, oznacza się pustość i pojawia się błąd statyczny.
Wartości typu xs:string są porównywane z domyślną koliacją kodowych punktów Unicode XQuery.
Examples
Ten temat zawiera przykłady zapytania XQuery dla wystąpień XML przechowywanych w różnych kolumnach typu XML w bazie danych AdventureWorks.
A. Wykorzystanie funkcji distinct-values() do usunięcia zduplikowanych wartości z sekwencji
W tym przykładzie instancja XML zawierająca numery telefoniczne jest przypisana do zmiennej typu xml . Funkcja XQuery względem tej zmiennej używa funkcji distinct-values() do skompilowania listy numerów telefonów, które nie zawierają duplikatów.
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
Jest to wynik:
111-111-1111 222-222-2222
W następującym zapytaniu ciąg liczb (1, 1, 2) jest przekazywany do funkcji distinct-values(). Funkcja następnie usuwa duplikat z sekwencji i zwraca pozostałe dwa.
declare @x xml
set @x = ''
select @x.query('
distinct-values((1, 1, 2))
') as result
Zapytanie zwraca 1 2.
Ograniczenia implementacji
Są to ograniczenia:
Funkcja distinct-values() odwzorowuje wartości całkowite na xs:decimal.
Funkcja distinct-values() obsługuje jedynie wspomniane wcześniej typy i nie wspiera mieszanki typów bazowych.
Funkcja distinct-values() na wartościach xs:duration nie jest obsługiwana.
Opcja składniowa zapewniająca sortowanie nie jest obsługiwana.