Udostępnij za pośrednictwem


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.

Zobacz także

Odwołanie