Partilhar via


Expressões escalares no Azure Cosmos DB para NoSQL

APLICA-SE A: NoSQL

A SELECT cláusula suporta expressões escalares. Uma expressão escalar é uma combinação de símbolos e operadores que podem ser avaliados para obter um único valor. Exemplos de expressões escalares incluem: constantes, referências de propriedade, referências de elemento de matriz, referências de alias ou chamadas de função. Expressões escalares podem ser combinadas em expressões complexas usando operadores.

Sintaxe

<scalar_expression> ::=  
       <constant>
     | input_alias
     | parameter_name  
     | <scalar_expression>.property_name  
     | <scalar_expression>'['"property_name"|array_index']'  
     | unary_operator <scalar_expression>  
     | <scalar_expression> binary_operator <scalar_expression>    
     | <scalar_expression> ? <scalar_expression> : <scalar_expression>  
     | <scalar_function_expression>  
     | <create_object_expression>
     | <create_array_expression>  
     | (<scalar_expression>)
  
<scalar_function_expression> ::=  
        'udf.' Udf_scalar_function([<scalar_expression>][,…n])  
        | builtin_scalar_function([<scalar_expression>][,…n])  
  
<create_object_expression> ::=  
   '{' [{property_name | "property_name"} : <scalar_expression>][,…n] '}'  
  
<create_array_expression> ::=  
   '[' [<scalar_expression>][,…n] ']'

Argumentos

Description
<constant> Representa um valor constante. Consulte a seção Constantes para obter detalhes.
input_alias Representa um valor definido pelo input_alias introduzido na FROM cláusula.
Esse valor é garantido para não ser indefinido valores indefinidos na entrada são ignorados.
<scalar_expression>.property_name Representa um valor da propriedade de um objeto. Se a propriedade não existir ou a propriedade for referenciada em um valor, que não é um objeto, a expressão será avaliada como valor indefinido .
<scalar_expression>'['"property_name"|array_index']' Representa um valor da propriedade com nome property_name ou elemento de matriz com índice array_index de uma matriz. Se o índice de propriedade/matriz não existir ou se o índice de propriedade/matriz for referenciado em um valor que não seja um objeto/matriz, a expressão será avaliada como valor indefinido.
unary_operator <scalar_expression> Representa um operador que é aplicado a um único valor.
<scalar_expression> binary_operator <scalar_expression> Representa um operador que é aplicado a dois valores.
<scalar_function_expression> Representa um valor definido por um resultado de uma chamada de função.
udf_scalar_function Nome da função escalar definida pelo usuário.
builtin_scalar_function Nome da função escalar incorporada.
<create_object_expression> Representa um valor obtido pela criação de um novo objeto com propriedades especificadas e seus valores.
<create_array_expression> Representa um valor obtido pela criação de uma nova matriz com valores especificados como elementos
parameter_name Representa um valor do nome do parâmetro especificado. Os nomes dos parâmetros devem ter um único @ como primeiro caractere.

Exemplos

O exemplo mais comum de uma expressão escalar é uma equação matemática.

SELECT VALUE
    ((2 + 11 % 7) - 2) / 2
[
  2
]

Neste próximo exemplo, o resultado da expressão escalar é um booleano:

SELECT
    ("Redmond" = "WA") AS isCitySameAsState,
    ("WA" = "WA") AS isStateSameAsState
[
  {
    "isCitySameAsState": false,
    "isStateSameAsState": true
  }
]

Observações

  • Todos os argumentos devem ser definidos ao chamar uma função escalar interna ou definida pelo usuário. Se qualquer um dos argumentos estiver indefinido, a função não será chamada e o resultado será undefined.
  • Qualquer propriedade atribuída ao valor indefinido é ignorada e não incluída no objeto criado ao criar um objeto.
  • Qualquer valor de elemento ao qual é atribuído um valor indefinido é ignorado e não é incluído no objeto criado ao criar uma matriz. Esse pulo faz com que o próximo elemento definido ocupe seu lugar de tal forma que a matriz criada não ignore índices.