Compartir vía


Expresiones escalares en Azure Cosmos DB for NoSQL

SE APLICA A: NoSQL

La SELECTcláusula admite expresiones escalares. Una expresión escalar es una combinación de símbolos y operadores que se puede evaluar para obtener un solo valor. Entre los ejemplos de expresiones escalares se incluyen: constantes, referencias de propiedad, referencias de elementos de matriz, referencias de alias o llamadas de función. Las expresiones escalares se pueden combinar en expresiones complejas con operadores.

Sintaxis

<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

Descripción
<constant> Representa un valor constante. Vea la sección Constantes para obtener más información.
input_alias Representa un valor definido por input_alias, introducido en la cláusula FROM.
Este valor nunca será undefined, los valores undefined se omiten de la entrada.
<scalar_expression>.property_name Representa un valor de propiedad de un objeto. Si la propiedad no existe o se hace referencia a ella con un valor que no es un objeto, la expresión se evalúa como valor undefined.
<scalar_expression>'['"property_name"|array_index']' Representa un valor de propiedad con nombre property_name o un elemento de la matriz con el índice array_index de una matriz. Si la propiedad o el índice de matriz no existen o se hace referencia a ellos con un valor que no es un objeto o una matriz, la expresión se evalúa como valor undefined.
unary_operator <scalar_expression> Representa un operador que se aplica a un único valor.
<scalar_expression> binary_operator <scalar_expression> Representa un operador que se aplica a dos valores.
<scalar_function_expression> Representa un valor definido por el 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 incorporada.
<create_object_expression> Representa un valor obtenido al crear un objeto con propiedades especificadas y sus valores.
<create_array_expression> Representa un valor obtenido al crear una matriz con valores especificados como elementos.
parameter_name Representa un valor del nombre de parámetro especificado. Los nombres de parámetro deben tener un único @ como primer carácter.

Ejemplos

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

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

En el ejemplo siguiente, el resultado de la expresión escalar es un 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 es indefinido, no se llama a la función y el resultado es undefined.
  • Cualquier propiedad a la que se le asigne un valor indefinido se omite y no se incluye en el objeto creado al crear un objeto.
  • Cualquier valor de elemento al que se le asigne un valor indefinido se omite y no se incluye en el objeto creado al crear una matriz. Este salto hace que el siguiente elemento definido ocupe su lugar de forma que la matriz creada no omita índices.