Funkcje w sekwencjach — unikalne wartości

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.