Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Vrátí číselnou hodnotu uzlu, která je označena $arg.
Syntax
fn:number() as xs:double?
fn:number($arg as node()?) as xs:double?
Arguments
$arg
Uzel, jehož hodnota bude vrácena jako číslo.
Remarks
Pokud $arg není specifikován, vrátí se číselná hodnota kontextového uzlu, převedená na dvojnásobek. V SQL Server lze fn:number() bez argumentu použít pouze v kontextu kontextově závislého predikátu. Konkrétně lze použít pouze uvnitř závorek ([ ]). Například následující výraz vrací prvek <ROOT> .
declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')
Pokud hodnota uzlu není platnou lexikální reprezentací numerického jednoduchého typu, jak je definováno v XML Schema Part 2: Datatypes, W3C Recommendation, funkce vrátí prázdnou sekvenci. NaN není podporován.
Examples
Toto téma obsahuje příklady XQuery pro instance XML uložené v různých xml sloupce typu v databázi AdventureWorks.
A. Použití funkce number() XQuery k získání číselné hodnoty atributu
Následující dotaz získává číselnou hodnotu atributu velikosti šarže z prvního místa pracovního centra ve výrobním procesu Modelu produktu 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
Všimněte si následujících věcí z předchozího dotazu:
Funkce number() není nutná, jak ukazuje dotaz na atribut LotSizeA . Jedná se o funkci XPath 1.0 a je zahrnuta především z důvodů zpětné kompatibility.
XQuery pro LotSizeB specifikuje číselnou funkci a je redundantní.
Dotaz pro LotSizeD ilustruje použití číselné hodnoty v aritmetické operaci.
Toto je výsledek:
ProductModelID Result
----------------------------------------------
7 <Location LocationID="10"
LotSizeA="100"
LotSizeB="100"
LotSizeC="101" />
Omezení implementace
Toto jsou omezení:
Funkce number() přijímá pouze uzly. Nepřijímá atomové hodnoty.
Pokud nelze hodnoty vrátit jako číslo, funkce number() vrátí prázdnou posloupnost místo NaN.
Související obsah
- funkce XQuery proti datového typu XML