Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Devolve o valor numérico do nó indicado por $arg.
Sintaxe
fn:number() as xs:double?
fn:number($arg as node()?) as xs:double?
Argumentos
$arg
Nó cujo valor será devolvido como um número.
Comentários
Se $arg não for especificado, o valor numérico do nó de contexto, convertido em duplo, será retornado. No SQL Server, fn:number() sem um argumento só pode ser usado no contexto de um predicado dependente do contexto. Especificamente, só pode ser utilizado entre parênteses ([ ]). Por exemplo, a expressão a seguir retorna o elemento <ROOT>.
declare @x xml
set @x='<ROOT>111</ROOT>'
select @x.query('/ROOT[number()=111]')
Se o valor do nó não for uma representação lexical válida de um tipo numérico simples, conforme definido em Esquema XML Parte 2:Datatypes, W3C Recommendation, a função retornará uma sequência vazia. NaN não é suportado.
Exemplos
Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas xml type no banco de dados AdventureWorks.
Um. Usando a função number() XQuery para recuperar o valor numérico de um atributo
A consulta a seguir recupera o valor numérico do atributo de tamanho do lote do primeiro local do centro de trabalho no processo de fabricação do Modelo de Produto 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
Observe o seguinte da consulta anterior:
A função number() não é necessária, conforme mostrado pela consulta para o atributo LotSizeA. Esta é uma função XPath 1.0 e está incluída principalmente por razões de compatibilidade com versões anteriores.
O XQuery para LotSizeB especifica a função de número e é redundante.
A consulta para LotSizeD ilustra o uso de um valor numérico em uma operação aritmética.
Este é o resultado:
ProductModelID Result
----------------------------------------------
7 <Location LocationID="10"
LotSizeA="100"
LotSizeB="100"
LotSizeC="101" />
Limitações de implementação
Estas são as limitações:
A função number() só aceita nós. Não aceita valores atómicos.
Quando os valores não podem ser retornados como um número, a função number() retorna a sequência vazia em vez de NaN.