Skalarausdrücke in Azure Cosmos DB for NoSQL

GILT FÜR: NoSQL

Die SELECT-Klausel unterstützt Skalarausdrücke. Ein skalarer Ausdruck ist eine Kombination aus Symbolen und Operatoren, die ausgewertet werden können, um einen einzelnen Wert zu erhalten. Skalare Ausdrücke können beispielsweise Konstanten, Eigenschaftenverweise, Arrayelementverweise, Aliasverweise oder Funktionsaufrufe sein. Skalare Ausdrücke können mit Operatoren in komplexen Ausdrücken kombiniert werden.

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

Argumente

BESCHREIBUNG
<constant> Stellt einen konstanten Wert dar. Weitere Informationen finden Sie im Abschnitt Konstanten.
input_alias Stellt einen Wert dar, der von dem input_alias definiert wird, der in der FROM Klausel eingeführt wird.
Dieser Wert ist garantiert nicht undefiniertundefinierte Werte in der Eingabe werden übersprungen.
<scalar_expression>.property_name Stellt einen Wert der Eigenschaft eines Objekts dar. Wenn die Eigenschaft nicht vorhanden ist, oder über einen Wert, der kein Objekt ist, auf die Eigenschaft verwiesen wird, ergibt der Ausdruck den Wert undefined (undefiniert).
<scalar_expression>'['"property_name"|array_index']' Stellt einen Wert der Eigenschaft mit dem Namen property_name oder ein Arrayelement mit Index array_index eines Arrays dar. Wenn die Eigenschaft/der Arrayindex nicht vorhanden ist, oder über einen Wert, der kein Objekt/Array ist, auf die Eigenschaft/den Arrayindex verwiesen wird, wird der Ausdruck als undefinierter Wert ausgewertet.
unary_operator <scalar_expression> Stellt einen Operator dar, der auf einen einzelnen Wert angewendet wird.
<scalar_expression> binary_operator <scalar_expression> Stellt einen Operator dar, der auf zwei Werte angewendet wird.
<scalar_function_expression> Stellt einen Wert dar, der durch ein Ergebnis eines Funktionsaufrufs definiert wird.
udf_scalar_function Name der benutzerdefinierten Skalarfunktion.
builtin_scalar_function Name der integrierten skalaren Funktion.
<create_object_expression> Stellt einen Wert dar, der durch Erstellen eines neuen Objekts mit festgelegten Eigenschaften und ihren Werten gewonnen wird.
<create_array_expression> Stellt einen Wert dar, der durch Erstellen eines neuen Arrays mit festgelegten Werten als Elemente gewonnen wird.
parameter_name Stellt einen Wert des angegebenen Parameternamens dar. Das erste Zeichen eines Parameternamens muss ein einzelnes „@“ sein.

Beispiele

Das häufigste Beispiel für einen Skalarausdruck ist eine mathematische Formel.

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

Im folgenden Beispiel ist das Ergebnis des Skalarausdrucks ein boolescher Wert:

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

Bemerkungen

  • Alle Argumente müssen beim Aufrufen einer integrierten oder benutzerdefinierten Skalarfunktion definiert werden. Wenn eines der Argumente nicht definiert wurde, wird die Funktion nicht aufgerufen, und das Ergebnis lautet: undefined.
  • Beim Erstellen eines Objekts wird jede Eigenschaft, der ein undefinierter Wert zugewiesen wurde, übersprungen und in das erstellte Objekt nicht einbezogen.
  • Beim Erstellen eines Arrays wird jeder Elementwert, dem ein undefinierter Wert zugewiesen wurde, übersprungen und in das erstellte Objekt nicht einbezogen. Daraufhin nimmt das nächste definierte Element seinen Platz so ein, dass das erstellte Array keine Indizes überspringt.