Share via


Função number (XQuery)

Retorna o valor numérico do nó que é indicado através de $arg.

Sintaxe

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

Argumentos

  • $arg
    Nó cujo valor será retornado como um número.

Comentários

Se $arg não for especificado, o valor numérico do nó de contexto, convertido em um duplo, será retornado. No SQL Server, fn:number() sem um argumento pode ser usado somente no contexto de um predicado dependente de contexto. Mais precisamente, só pode ser usado entre colchetes ([]). 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 léxica válida de um tipo numérico simples, como definido em XML Schema Part 2:Datatypes, W3C Recommendation, a função retorna uma seqüência vazia. Não é oferecido suporte a NaN.

Exemplos

Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xml no banco de dados AdventureWorks. Para obter uma visão geral de cada uma dessas colunas, consulte Representação de tipo de dados xml no banco de dados do AdventureWorks.

A. Uso da 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 de lote do primeiro local de centro de trabalho no processo de fabricação do Modelo do 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 na consulta anterior:

  • A função number() não é necessária, como mostrado pela consulta para o atributo LotSizeA. Isso é uma função XPath 1.0 e é 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 de número 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() aceita somente nós. Ela não aceita valores atômicos.

  • Quando os valores não puderem ser retornados como um número, a função number() retorna a seqüência vazia em vez de NaN.

Consulte também

Referência