Düğümlerdeki Fonksiyonlar - sayı

Şunlar için geçerlidir: SQL Server

Düğümün $arg ile belirtilen sayısal değerini döndürür.

Syntax

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

Arguments

$arg
Değeri bir sayı olarak geri dönecek düğüm.

Remarks

Eğer $arg belirtilmemişse, bağlam düğümünün sayısal değeri çifte dönüştürülür ve döner. SQL Server'da, argüman olmadan fn:number() yalnızca bağlama bağlı bir önlem bağlamında kullanılabilir. Özellikle, yalnızca parantez içinde kullanılabilir ([ ]). Örneğin, aşağıdaki ifade elemanı <ROOT> geri getirir.

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

Düğümün değeri, XML Şeması Bölüm 2:Veri Tipleri, W3C Öneri'nde tanımlandığı gibi sayısal basit bir türün geçerli bir sözcük temsili değilse, fonksiyon boş bir diziyi döndürür. NaN desteklenmiyor.

Examples

Bu konu, AdventureWorks veritabanındaki çeşitli xml tipi sütunlarda depolanan XML örneklerine karşı XQuery örnekleri sunmaktadır.

A. Bir özniteliğin sayısal değerini almak için number() XQuery fonksiyonu kullanılarak

Aşağıdaki sorgu, Ürün Modeli 7'nin üretim sürecindeki ilk iş merkezi konumundan lot boyutu özniteliğinin sayısal değerini alır.

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:

  • LotSizeA özniteliği için yapılan sorguda gösterildiği gibi, number() fonksiyonu zorunlu değildir. Bu, XPath 1.0 için bir fonksiyondur ve esas olarak geriye dönük uyumluluk nedenleriyle dahil edilmiştir.

  • LotSizeB için XQuery sayı fonksiyonunu belirtir ve yedektir.

  • LotSizeD için yapılan sorgu, aritmetik bir işlemde bir sayı değerinin kullanımını gösterir.

Sonuç şu şekildedir:

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

Uygulama Sınırlamaları

Sınırlamalar şunlardır:

  • Number() fonksiyonu yalnızca düğümleri kabul eder. Atomik değerleri kabul etmez.

  • Değerler sayı olarak geri döndürülemezse, number() fonksiyonu NaN yerine boş diziyi döndürür.