Compartilhar via


Função min (XQuery)

Retorna de uma sequência de valores atômicos, $arg, o item cujo valor é menor do que todos os outros.

Sintaxe

fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType?

Argumentos

  • $arg
    Sequência de itens dos quais retornar o valor mínimo.

Comentários

Todos os tipos de valores atomizados que são passados para min() têm de ser subtipos do mesmo tipo base. Os tipos base aceitos são os tipos que dão suporte à operação de gt. Esses tipos incluem os três tipos base numéricos internos, os tipos base de data/hora, xs:string, xs:boolean e xdt:untypedAtomic. Valores do tipo xdt:untypedAtomic são convertidos em xs:double. Se houver uma mistura desses tipos, ou se outros valores de outros tipos forem passados, será gerado um erro estático.

O resultado de min() recebe o tipo base dos tipos passados como xs:double no caso de xdt:untypedAtomic. Se a entrada estiver estaticamente vazia, o vazio será implícito e um erro estático será retornado.

A função min() retorna o valor na sequência que é menor que qualquer outro na sequência de entrada. Para valores xs:string, o agrupamento de ponto de código Unicode padrão está sendo usado. Se um valor xdt:untypedAtomic não puder ser convertido em xs:double, o valor será desconsiderado na sequência de entrada $arg. Se a entrada for uma sequência vazia calculada dinamicamente, a sequência vazia será retornada.

Exemplos

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

A. Usando a função min() XQuery para localizar o local de centro de trabalho com menos horas de trabalho

A consulta a seguir recupera todos os locais de centro de trabalho no processo de fabricação do modelo de produto (ProductModelID=7) com menos horas de trabalho. Geralmente, como mostrado a seguir, um único local é retornado. Se vários locais tivessem um número igual de horas de trabalho mínimas, todos eles seriam retornados.

select ProductModelID, Name, Instructions.query('
  declare namespace AWMI=
    "https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
  for   $Location in /AWMI:root/AWMI:Location
  where $Location/@LaborHours =
          min( /AWMI:root/AWMI:Location/@LaborHours )
return
  <Location WCID=     "{ $Location/@LocationID }" 
              LaborHrs= "{ $Location/@LaborHours }" />
  ') as Result 
FROM  Production.ProductModel
WHERE ProductModelID=7;

Observe o seguinte na consulta anterior:

  • A palavra-chave namespace no prólogo do XQuery define um prefixo de namespace. Esse prefixo é então usado no corpo do XQuery.

O corpo do XQuery constrói o XML com um elemento <Location> com atributos WCID e LaborHrs.

  • A consulta também recupera os valores ProductModelID e nome.

Este é o resultado:

ProductModelID Nome Resultado

--------------- ---------------- ---------------------------------

7 HL Touring Frame <Location WCID="45" LaborHrs="0.5"/>

Limitações de implementação

Existem estas limitações:

  • A função min() mapeia todos os números inteiros para xs:decimal.

  • Não há suporte para a função min() em valores do tipo xs:duration.

  • Não há suporte para sequências que misturam tipos, atravessando os limites de tipo base.

  • Não há suporte para opção sintática que fornece agrupamento.

Consulte também

Referência