Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Returnerar det numeriska värdet för noden som anges av $arg.
Syntax
fn:number() as xs:double?
fn:number($arg as node()?) as xs:double?
Argument
$arg
Nod vars värde returneras som ett tal.
Anmärkningar
Om $arg inte anges returneras kontextnodens numeriska värde, konverterat till en dubbel. I SQL Server kan fn:number() utan argument endast användas i kontexten för ett kontextberoende predikat. Mer specifikt kan den bara användas inom hakparenteser ([ ]). Följande uttryck returnerar till exempel elementet <ROOT>.
declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')
Om värdet för noden inte är en giltig lexikal representation av en numerisk enkel typ, enligt definitionen i XML-schemadel 2:Datatypes, W3C-rekommendationreturnerar funktionen en tom sekvens. NaN stöds inte.
Exempel
Det här avsnittet innehåller XQuery-exempel mot XML-instanser som lagras i olika XML- typkolumner i AdventureWorks-databasen.
A. Använda XQuery-funktionen number() för att hämta det numeriska värdet för ett attribut
Följande fråga hämtar det numeriska värdet för partistorleksattributet från den första arbetsställeplatsen i tillverkningsprocessen för Produktmodell 7.
SELECT ProductModelID, Instructions.query('
declare namespace AWMI="https://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
Observera följande från föregående fråga:
Funktionen number() krävs inte, vilket visas i frågan för attributet LotSizeA. Det här är en XPath 1.0-funktion och ingår främst av bakåtkompatibilitetsskäl.
XQuery för LotSizeB- anger talfunktionen och är redundant.
Frågan för LotSizeD illustrerar användningen av ett talvärde i en aritmetikåtgärd.
Det här är resultatet:
ProductModelID Result
----------------------------------------------
7 <Location LocationID="10"
LotSizeA="100"
LotSizeB="100"
LotSizeC="101" />
Implementeringsbegränsningar
Det här är begränsningarna:
Funktionen number() accepterar endast noder. Den accepterar inte atomiska värden.
När värden inte kan returneras som ett tal returnerar funktionen number() den tomma sekvensen i stället för NaN.