Fonctions sur les nœuds - nombreFunctions on Nodes - number

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2012)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Retourne la valeur numérique du nœud qui est indiqué par $arg.Returns the numeric value of the node that is indicated by $arg.

SyntaxeSyntax


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

ArgumentsArguments

$arg$arg
Nœud dont vous voulez renvoyer la valeur sous forme numérique.Node whose value will be returned as a number.

NotesRemarks

Si $arg est ne pas spécifié, la valeur numérique du nœud de contexte, convertie en valeur double, est retournée.If $arg is not specified, the numeric value of the context node, converted to a double, is returned. Dans SQL Server, fn :number() sans argument peut uniquement être utilisé dans le contexte d’un prédicat dépendant du contexte.In SQL Server, fn:number() without an argument can only be used in the context of a context-dependent predicate. Autrement dit, elle ne peut être utilisée qu'à l'intérieur de crochets ([ ]).Specifically, it can only be used inside brackets ([ ]). Par exemple, l'expression suivante renvoie l'élément <ROOT>.For example, the following expression returns the <ROOT> element.

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, tel que défini dans XML Schema Part 2 : Datatypes, recommandation du W3C, la fonction retourne une séquence vide.If the value of the node is not a valid lexical representation of a numeric simple type, as defined in XML Schema Part 2:Datatypes, W3C Recommendation, the function returns an empty sequence. Les valeurs NaN ne sont pas prises en charge.NaN is not supported.

ExemplesExamples

Cette rubrique fournit des exemples de XQuery relatifs à des instances XML stockés dans différentes xml colonnes de type dans la base de données AdventureWorks.This topic provides XQuery examples against XML instances stored in various xml type columns in the AdventureWorks database.

A.A. Utilisation de la fonction XQuery number() pour récupérer la valeur numérique d'un attributUsing the number() XQuery function to retrieve the numeric value of an attribute

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.The following query retrieves the numeric value of the lot size attribute from the first work center location in the manufacturing process of Product Model 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 dans la requête précédente :Note the following from the previous query:

  • Le number() fonction n’est pas requise, comme indiqué par la requête pour le LotSizeA attribut.The number() function is not required, as shown by the query for the LotSizeA attribute. Il s'agit d'une fonction XPath 1.0 qui est incluse pour garantir la compatibilité ascendante.This is an XPath 1.0 function and is included primarily for backward compatibility reasons.

  • La requête XQuery LotSizeB spécifie la fonction number et est redondant.The XQuery for LotSizeB specifies the number function and is redundant.

  • La requête pour LotSizeD illustre l’utilisation d’une valeur numérique dans une opération arithmétique.The query for LotSizeD illustrates the use of a number value in an arithmetic operation.

    Voici le résultat obtenu :This is the result:

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

Limites de mise en œuvreImplementation Limitations

Les limitations suivantes s'appliquent :These are the limitations:

  • Le number() fonction accepte uniquement les nœuds.The number() function only accepts nodes. Elle n'accepte pas de valeurs atomiques.It does not accept atomic values.

  • Lorsque les valeurs ne peuvent pas être retournés sous forme de nombre, la number() fonction retourne la séquence vide au lieu de la valeur NaN.When values cannot be returned as a number, the number() function returns the empty sequence instead of NaN.

Voir aussiSee Also

Fonctions XQuery impliquant le type de données xmlXQuery Functions against the xml Data Type