Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Fonction distinct-values (XQuery)

Supprime les valeurs en double d'une séquence spécifiée par $arg. La fonction renvoie une séquence vide si $arg correspond à une séquence vide.

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

$arg

Séquence de valeurs atomiques.

Tous les types de valeurs atomisées transmises à distinct-values() doivent être du même sous-type que le type de base. Les types de base acceptés correspondent à ceux qui prennent en charge l'opération eq. Ces types incluent les trois types numériques de base intégrés, les types de base date/heure et les types xs:string (chaîne), xs:boolean (booléen) et xdt:untypedAtomic (atomique non typé). Les valeurs de type xdt:untypedAtomic sont converties en type xs:string. En cas de mélange de ces types ou si des valeurs d'autres types sont transmis, une erreur statique se produit.

Le résultat de la fonction distinct-values() reçoit le type de base des types transmis, tel que xs:string dans le cas du type xdt:untypedAtomic, avec sa cardinalité d'origine. Si l'entrée est vide (valeur empty) de façon statique, « empty » est alors implicite et une erreur statique est émise.

Les valeurs de type xs:string sont comparées au classement de point de codes Unicode par défaut de XQuery.

Cette rubrique propose des exemples de XQuery relatifs à des instances XML stockées dans différentes colonnes de type xml tirées de la base de données AdventureWorks.

A.Utilisation de la fonction distinct-values() pour supprimer les valeurs en double d'une séquence

Dans cet exemple, une instance XML contenant des numéros de téléphone est affectée à une variable de type xml. La requête XQuery spécifiée sur cette variable utilise la fonction distinct-values() pour compiler une liste de numéros de téléphone ne contenant pas de doublons.

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

Voici le résultat obtenu :

 111-111-1111 222-222-2222  

Dans la requête suivante, une séquence de chiffres (1, 1, 2) est transmise à la fonction distinct-values(). La fonction supprime ensuite la valeur en double de la séquence et renvoie les deux autres.

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

La requête renvoie « 1 2 ».

Limitations relatives à son implémentation

Les limitations suivantes s'appliquent :

  • La fonction distinct-values() mappe les valeurs entières au type xs:decimal.

  • La fonction distinct-values() ne prend en charge que les types précédemment mentionnés et n'accepte pas les combinaisons de types de base.

  • La fonction distinct-values() appliquée à des valeurs de type xs:duration (durée) n'est pas prise en charge.

  • L'option syntaxique fournissant un classement n'est pas prise en charge.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft