Liczba funkcji (XQuery)
Zwraca wartość liczbową węzeł, który jest wskazywany przez $arg.
Składnia
fn:number() as xs:double?
fn:number($arg as node()?) as xs:double?
Argumenty
- $arg
Węzeł, którego wartość zostanie zwrócony jako liczba.
Uwagi
Jeśli $arg jest nie jest określony, jest zwracana wartość liczbową węzła kontekstowego konwertowane typu double.W programie SQL Server fn:number() bez argumentu mogą być używane tylko w kontekście predykat zależne od kontekstu.W szczególności go należy używać tylko wewnątrz nawiasów kwadratowych ([]).Na przykład, następujące wyrażenie zwraca <ROOT> elementu.
declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')
Jeśli wartość węzła nie jest prawidłową reprezentację leksykalne liczbowe typu prostego, jak określono w 2:Datatypes część schematu XML, zalecenia konsorcjum W3C, funkcja zwraca pusty sekwencji.NaN nie jest obsługiwane.
Przykłady
W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML przechowywanych w różnych xml wpisz kolumn w AdventureWorks2008R2 bazy danych.Przegląd tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.
A.Aby pobrać wartość liczbową atrybut przy użyciu XQuery funkcja number()
Następująca kwerenda pobiera wartość liczbową atrybut rozmiaru partii z pierwszej pracy Centrum lokalizacji w procesie wytwarzania 7 modelu produktu.
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;
Poniższe z poprzedniej kwerendy:
Number() funkcja nie jest wymagane, przedstawioną kwerendę dla LotSizeA atrybut.Funkcja XPath 1.0 i stanowi przede wszystkim na zgodność ze starszymi wersjami.
XQuery dla LotSizeB określa funkcja numer i jest zbędne.
Kwerendy dla LotSizeD ilustruje użycie wartość numeru w operacji arytmetycznej.
Jest to wynikiem:
ProductModelID Result
----------------------------------------------
7 <Location LocationID="10"
LotSizeA="100"
LotSizeB="100"
LotSizeC="101" />
Ograniczenia wdrażania
Są następujące ograniczenia:
Number() funkcja akceptuje tylko węzły.Nie akceptuje wartości niepodzielny.
Gdy wartości nie może być zwrócona jako liczbę, number() funkcja zwraca pusty sekwencji zamiast NaN.