Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
Возвращает числовое значение узла, указанного $arg.
Синтаксис
fn:number() as xs:double?
fn:number($arg as node()?) as xs:double?
Аргументы
$arg
Узел, значение которого будет возвращено в виде числа.
Замечания
Если $arg не задано, возвращается числовое значение узла контекста, преобразованное в двойное. В SQL Server fn:number() без аргумента можно использовать только в контексте предиката, зависящей от контекста. Точнее, она может использоваться только внутри квадратных скобок ([ ]). Например, следующее выражение возвращает <ROOT> элемент.
declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')
Если значение узла не является допустимым лексическим представлением числового простого типа, как определено в части XML Schema 2:Datatypes, рекомендация W3C, функция возвращает пустую последовательность. Синтаксис NaN не поддерживается.
Примеры
В этом разделе приведены примеры XQuery для экземпляров XML, хранящихся в различных столбцах типов XML в базе данных AdventureWorks.
А. Использование функции number() языка XQuery для получения числового значения атрибута
В следующем запросе получается числовое значение атрибута, представляющего объем партии, производимого в первом цехе, участвующем в производственном процессе для модели продукта 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
Обратите внимание на следующие данные из предыдущего запроса:
Функция number() не требуется, как показано в запросе для атрибута LotSizeA. Это функция языка XPath 1.0, и она включена в основном по причинам обратной совместимости;
XQuery для LotSizeB указывает функцию числа и является избыточной.
Запрос LotSizeD иллюстрирует использование числа значения в арифметической операции.
Результат:
ProductModelID Result
----------------------------------------------
7 <Location LocationID="10"
LotSizeA="100"
LotSizeB="100"
LotSizeC="101" />
Ограничения реализации
Существуют следующие ограничения:
Функция number() принимает только узлы. Она не принимает атомарных значений;
Если значения не могут быть возвращены в виде числа, функция number() возвращает пустую последовательность вместо NaN.