Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.