Espressioni scalari in Azure Cosmos DB per NoSQL

SI APPLICA A: NoSQL

La SELECT clausola supporta espressioni scalari. Un'espressione scalare è una combinazione di simboli e operatori che si può valutare per ottenere un singolo valore. Esempi di espressioni scalari includono costanti, riferimenti a proprietà, riferimenti a elementi di matrice, riferimenti alias o chiamate di funzione. Le espressioni scalari possono essere combinate in espressioni complesse tramite operatori.

Sintassi

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

Argomenti

Descrizione
<constant> Rappresenta un valore costante. Per informazioni dettagliate, vedere la sezione Costanti.
input_alias Rappresenta un valore definito dall'elemento input_alias introdotto nella clausola FROM.
Questo valore è sicuramente diverso da un valore non definito: i valori non definiti presenti nell'input verranno ignorati.
<scalar_expression>.property_name Rappresenta un valore della proprietà di un oggetto. Se la proprietà non esiste o viene fatto riferimento a una proprietà su un valore, che non è un oggetto, l'espressione restituisce un valore non definito .
<scalar_expression>'['"property_name"|array_index']' Rappresenta un valore della proprietà con nome property_name o elemento matrice con indice array_index di una matrice. Se l'indice di proprietà/matrice non esiste o viene fatto riferimento all'indice di proprietà/matrice su un valore che non è un oggetto/matrice, l'espressione restituisce un valore non definito.
unary_operator <scalar_expression> Rappresenta un operatore applicato a un singolo valore.
<scalar_expression> binary_operator <scalar_expression> Rappresenta un operatore applicato a due valori.
<scalar_function_expression> Rappresenta un valore definito da un risultato di una chiamata di funzione.
udf_scalar_function Nome della funzione scalare definita dall'utente.
builtin_scalar_function Nome della funzione scalare predefinita.
<create_object_expression> Rappresenta un valore ottenuto creando un nuovo oggetto con proprietà specificate e i relativi valori.
<create_array_expression> Rappresenta un valore ottenuto creando una nuova matrice con valori specificati come elementi
parameter_name Rappresenta un valore del nome di parametro specificato. I nomi di parametro devono avere un singolo carattere @ come primo carattere.

Esempio

L'esempio più comune di un'espressione scalare è un'equazione matematica.

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

In questo esempio seguente il risultato dell'espressione scalare è un valore booleano:

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

Commenti

  • Tutti gli argomenti devono essere definiti quando si chiama una funzione scalare predefinita o definita dall'utente. Se uno degli argomenti non è definito, la funzione non viene chiamata e il risultato è undefined.
  • Qualsiasi proprietà assegnata a un valore non definito viene ignorata e non inclusa nell'oggetto creato durante la creazione di un oggetto.
  • Qualsiasi valore di elemento assegnato non definito viene ignorato e non incluso nell'oggetto creato durante la creazione di una matrice. In questo modo l'elemento definito successivo viene eseguito in modo che la matrice creata non ignori gli indici.