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.