Compartilhar via


Funções em Sequências – distinct-values

Aplica-se a:SQL Server

Remove valores duplicados da sequência especificada por $arg. Se $arg for uma sequência vazia, a função retornará a sequência vazia.

Sintaxe

  
fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType*  

Argumentos

$arg
Sequência de valores atômicos.

Comentários

Todos os tipos de valores atomizados que são passados para distinct-values() precisam ser subtipos do mesmo tipo base. Os tipos base aceitos são os tipos que dão suporte à operação eq . Esses tipos incluem os três tipos base numéricos internos, os tipos base de data/hora, xs:string, xs:boolean e xdt:untypedAtomic. Os valores do tipo xdt:untypedAtomic são convertidos em xs:string. Se houver uma combinação desses tipos ou se outros valores de outros tipos forem passados, um erro estático será gerado.

O resultado de distinct-values() recebe o tipo base dos tipos passados, como xs:string no caso de xdt:untypedAtomic, com a cardinalidade original. Se a entrada estiver estaticamente vazia, vazio será implícito e um erro estático será gerado.

Os valores de xs:string são comparados à ordenação de ponto de código Unicode padrão XQuery.

Exemplos

Este tópico fornece exemplos XQuery em instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.

a. Usando a função distinct-values() para remover valores duplicados da sequência

Neste exemplo, uma instância XML que contém números de telefone é atribuída a uma variável de tipo xml . O XQuery especificado em relação a essa variável usa a função distinct-values() para compilar uma lista de números de telefone que não contêm duplicatas.

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  

Este é o resultado:

111-111-1111 222-222-2222    

Na consulta a seguir, uma sequência de números (1, 1, 2) é passada para a função distinct-values(). A função remove então a duplicata na sequência e retorna as outras duas.

declare @x xml  
set @x = ''  
select @x.query('  
  distinct-values((1, 1, 2))  
') as result  

A consulta retorna 1 2.

Limitações de implementação

Estas são as limitações:

  • A função distinct-values() mapeia valores inteiros para xs:decimal.

  • A função distinct-values() dá suporte apenas aos tipos mencionados anteriormente e não dá suporte à combinação de tipos base.

  • Não há suporte para a função distinct-values() em valores xs:duration.

  • Não há suporte para opção sintática que fornece ordenação.

Consulte Também

Funções XQuery em tipos de dados xml