sayıişlev (XQuery)
Düğüm tarafından belirtilen sayısal değerini verir. $arg.
fn:number() as xs:double?
fn:number($arg as node()?) as xs:double?
Bağımsız değişkenler
- $arg
Düğümü bir sayı değeri döndürdü.
Remarks
If $arg olan belirtilmedi, bir çift için dönüştürülmüş içerik düğümün, sayısal bir değer döndürdü. SQL Server'da fn:Number() bir bağımsız değişken olmadan, yalnızca bir içerik bağımlı yüklemi içeriğinde kullanılabilir.Özellikle, yalnızca köşeli ayraçlar ([]) içinde kullanılabilir.Örneğin, aşağıdaki ifade döndürür <ROOT> öğe.
declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')
Düğüm değerini sayısal bir basit tür geçerli sözlü sunumunu tanımlandığı gibi değilse XML şeması bölümü 2:Datatypes W3C önerisi, işlev, boş bir dizisi verir.NaN desteklenmiyor.
Örnekler
Bu konu, çeşitli içinde depolanan XML örnekleri karşı XQuery örnekler sağlar. XML türü sütunlarındaki AdventureWorks veritabanındaki.Konusuna genel bir bakış bu sütunların her biri için bkz: XML veri türü temsili AdventureWorks veritabanındaki.
C.Sayısal değerini almak için number() XQuery işlevni kullanarak bir öznitelik
Lot boyutunu sayısal değerini aşağıdaki sorgu alır öznitelik ilk iş merkezi konumdan Üretim işleminde ürün model 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
Önceki sorgudan aşağıdakilere dikkat edin:
The number() işlev is not required, as shown by the query for the LotSizeA öznitelik.Bir XPath 1.0 işlevidir ve öncelikle geriye dönük uyumluluk nedeniyle eklenmiştir.
Için XQuery LotSizeB sayı işlev belirtir; yedek.
Sorgu için LotSizeD , bir sayı değeri bir aritmetik işlemde kullanımını gösterir.
Bu sonucu oluşur:
ProductModelID Result
----------------------------------------------
7 <Location LocationID="10"
LotSizeA="100"
LotSizeB="100"
LotSizeC="101" />
Uygulama kısıtlamaları
Sınırlamaları şunlardır:
The number() işlev only accepts nodes.Atomik değerleri kabul etmiyor.
Değer bir sayı döndürüldü, Number() işlev NaN yerine boş sırasını döndürür.