Expressões escalares no Azure Cosmos DB for NoSQL
APLICA-SE A: NoSQL
A cláusula SELECT
suporta expressões escalares. Uma expressão escalar é uma combinação de símbolos e operadores que podem ser avaliados para se obter um único valor. Exemplos de expressões simples: constantes, referências de propriedade, referências de elemento de matriz, referências de alias ou chamadas de função. As 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
Descrição | |
---|---|
<constant> |
Representa um valor constante. Consulte a seção Constantes para obter detalhes. |
input_alias |
Representa um valor definido pelo input_alias introduzido na cláusula FROM . |
Esse valor é garantidamente diferente de indefinido; os 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 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 o índice de propriedade/matriz for referenciado em um valor que não seja um objeto/matriz, a expressão será avaliada como um 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 interna. |
<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 de parâmetro especificado. Os nomes de parâmetro devem ter uma única @ 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
}
]
Comentários
- Todos os argumentos devem ser definidos ao chamar uma função escalar interna ou definida pelo usuário. Se algum dos argumentos for indefinido, a função não será chamada e o resultado será
undefined
. - Ao criar um objeto, qualquer propriedade à qual seja atribuído um valor indefinido será ignorada e não será incluída no objeto criado.
- Qualquer valor de elemento ao qual seja atribuído o valor indefinido será ignorado e não será incluído no objeto criado ao criar uma matriz. Ao ignorar, o próximo elemento definido toma seu lugar de forma que a matriz criada não ignore os índices.