Partilhar via


Funções em sequências - valores distintos

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 valores distintos() devem ser subtipos do mesmo tipo base. Os tipos de base aceitos são os tipos que suportam a operação eq. Esses tipos incluem os três tipos de base numérica internos, os tipos de base de data/hora, xs:string, xs:booleano 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, um erro estático será gerado.

O resultado de valores distintos() recebe o tipo base do passado em tipos, como xs:string no caso de xdt:untypedAtomic, com a cardinalidade original. Se a entrada estiver estaticamente vazia, vazio é implícito e um erro estático é gerado.

Os valores do tipo xs:string são comparados com o XQuery padrão Unicode Codepoint Collation.

Exemplos

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

Um. 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 de 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 valores distintos(). A função então remove 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 de base.

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

  • A opção sintática que fornece um agrupamento não é suportada.

Ver também

funções XQuery em relação ao tipo de dados xml