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 number (XQuery)

Renvoie la valeur numérique du nœud qui est indiqué par $arg.

fn:number() as xs:double? 
fn:number($arg as node()?) as xs:double?

$arg

Nœud dont vous voulez renvoyer la valeur sous forme numérique.

Si $arg n'est pas spécifié, la valeur numérique du nœud de contexte, convertie en valeur double précision, est renvoyée. Dans SQL Server, la fonction fn:number() sans argument ne peut être utilisée que dans le cadre d'un prédicat contextuel. Autrement dit, elle ne peut être utilisée qu'à l'intérieur de crochets ([ ]). Par exemple, l'expression suivante renvoie l'élément <ROOT>.

declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')

Si la valeur du nœud n'est pas une représentation lexicale correcte d'un type simple numérique, comme défini dans la recommandation du W3C, XML Schema Part 2:Datatypes, la fonction renvoie une séquence vide. Les valeurs NaN ne sont pas prises en charge.

Cette rubrique fournit des exemples de requêtes XQuery impliquant des instances XML stockées dans différentes colonnes de type xml dans la base de données AdventureWorks.

A.Utilisation de la fonction XQuery number() pour récupérer la valeur numérique d'un attribut

La requête suivante récupère la valeur numérique de l'attribut taille de lot à partir du premier poste de travail du processus de fabrication du modèle de produit 7.

SELECT ProductModelID, Instructions.query('
declare namespace AWMI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
     for $i in (//AWMI:root//AWMI:Location)[1]
     return 
       <Location LocationID="{ ($i/@LocationID) }" 
                   LotSizeA="{  $i/@LotSize }"
                   LotSizeB="{  number($i/@LotSize) }"
                   LotSizeC="{ number($i/@LotSize) + 1 }" >
                   
       </Location>
') as Result
FROM Production.ProductModel
WHERE ProductModelID=7

Notez les points suivants à propos de la requête précédente :

  • La fonction number() n'est pas obligatoire, comme le montre la requête portant sur l'attribut LotSizeA. Il s'agit d'une fonction XPath 1.0 qui est incluse pour garantir la compatibilité ascendante.

  • La requête XQuery portant sur LotSizeB spécifie la fonction number et est redondante.

  • La requête portant sur LotSizeD montre comment utiliser une valeur numérique dans une opération arithmétique.

Voici le résultat obtenu :

ProductModelID   Result
----------------------------------------------
7              <Location LocationID="10" 
                         LotSizeA="100" 
                         LotSizeB="100" 
                         LotSizeC="101" />

Limites de la mise en œuvre

Les limites sont les suivantes :

  • La fonction number() n'accepte que des nœuds. Elle n'accepte pas de valeurs atomiques.

  • Lorsqu'il est impossible de renvoyer les valeurs sous forme numérique, la fonction number() renvoie la séquence vide à la place d'une valeur NaN.

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