Compartir vía


Expresiones escalares: lenguaje de consulta en Cosmos DB (en Azure y Fabric)

La SELECT cláusula admite expresiones escalares. Una expresión escalar es una combinación de símbolos y operadores que se pueden evaluar para obtener un único valor. Algunos ejemplos de expresiones escalares son: constantes, referencias de propiedades, referencias de elementos de matriz, referencias de alias o llamadas de función. Las expresiones escalares se pueden combinar en expresiones complejas mediante operadores.

Syntax

<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] ']'

Arguments

Description
<constant> Representa un valor constante. Consulte la sección Constantes para obtener más información.
input_alias Representa un valor definido por el input_alias introducido en la FROM cláusula .
Se garantiza que este valor no sea indefinido : se omiten los valores indefinidos de la entrada.
<scalar_expression>.property_name Representa un valor de la propiedad de un objeto . Si la propiedad no existe o se hace referencia a la propiedad en un valor, que no es un objeto, la expresión se evalúa como un valor indefinido .
<scalar_expression>'['"property_name"|array_index']' Representa un valor de la propiedad con el nombre property_name o el elemento de matriz con el índice array_index de una matriz. Si el índice de propiedad o matriz no existe o se hace referencia al índice de propiedad o matriz en un valor que no es un objeto o matriz, la expresión se evalúa como un valor indefinido.
unary_operator <scalar_expression> Representa un operador que se aplica a un valor único.
<scalar_expression> binary_operator <scalar_expression> Representa un operador que se aplica a dos valores.
<scalar_function_expression> Representa un valor definido por un resultado de una llamada de función.
udf_scalar_function Nombre de la función escalar definida por el usuario.
builtin_scalar_function Nombre de la función escalar integrada.
<create_object_expression> Representa un valor obtenido mediante la creación de un nuevo objeto con las propiedades especificadas y sus valores.
<create_array_expression> Representa un valor obtenido mediante la creación de una nueva matriz con valores especificados como elementos
parameter_name Representa un valor del nombre de parámetro especificado. Los nombres de parámetro deben tener una sola @ como primer carácter.

Examples

El ejemplo más común de una expresión escalar es una ecuación matemática.

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

En este ejemplo siguiente, el resultado de la expresión escalar es un valor booleano:

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

Observaciones

  • Todos los argumentos deben definirse al llamar a una función escalar integrada o definida por el usuario. Si alguno de los argumentos no está definido, no se llama a la función y el resultado es undefined.
  • Se omite cualquier propiedad que tenga asignado un valor indefinido y no se incluye en el objeto creado al crear un objeto.
  • Se omite cualquier valor de elemento asignado sin definir y no se incluye en el objeto creado al crear una matriz. Esta omisión hace que el siguiente elemento definido tenga su lugar de forma que la matriz creada no omita los índices.