Partilhar via


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

Aplica-se: 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() devem ser subtipos do mesmo tipo base. Os tipos base aceitos são os tipos que dão suporte à operação de equalização . 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 mistura desses tipos, ou se outros valores de outros tipos forem passados, será gerado um erro estático.

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 estará 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 de XQuery em relação a instâncias XML armazenadas em várias colunas de tipo xml no banco de dados AdventureWorks.

R. 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() suporta apenas os tipos mencionados anteriormente e não suporta a mistura de tipos base.

  • A função distinct-values() em valores xs:duration não é suportada.

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

Confira também

Funções XQuery em Tipos de Dados XML