Freigeben über


Skalare Ausdrücke – Abfragesprache in Cosmos DB (in Azure und Fabric)

Die SELECT Klausel unterstützt skalare Ausdrücke. Ein skalarer Ausdruck ist eine Kombination aus Symbolen und Operatoren, die ausgewertet werden können, um einen einzelnen Wert zu erhalten. Beispiele für skalare Ausdrücke sind: Konstanten, Eigenschaftsverweise, Arrayelementverweise, Aliasverweise oder Funktionsaufrufe. Skalare Ausdrücke können mithilfe von Operatoren in komplexe Ausdrücke 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] ']'

Arguments

Description
<constant> Stellt einen Konstantenwert dar. Details finden Sie im Abschnitt "Konstanten ".
input_alias Stellt einen durch die in der input_aliasFROM Klausel eingeführten Wert dar.
Dieser Wert ist garantiert nicht definiert – undefinierte Werte in der Eingabe werden übersprungen.
<scalar_expression>.property_name Stellt einen Wert der Eigenschaft eines Objekts dar. Wenn auf die Eigenschaft nicht vorhanden ist oder auf einen Wert verwiesen wird, auf den kein Objekt verweist, wird der Ausdruck als nicht definierter Wert ausgewertet.
<scalar_expression>'['"property_name"|array_index']' Stellt einen Wert der Eigenschaft mit Dem Namen property_name oder Arrayelement mit Index array_index eines Arrays dar. Wenn der Eigenschafts-/Arrayindex nicht vorhanden ist oder auf den Eigenschafts-/Arrayindex für einen Wert verwiesen wird, der kein Objekt/Array ist, wird der Ausdruck als nicht definierter 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 Skalarfunktion.
<create_object_expression> Stellt einen Wert dar, der durch Erstellen eines neuen Objekts mit angegebenen Eigenschaften und deren Werten abgerufen wird.
<create_array_expression> Stellt einen Durch das Erstellen eines neuen Arrays mit angegebenen Werten als Elemente abgerufenen Wert dar.
parameter_name Stellt einen Wert des angegebenen Parameternamens dar. Parameternamen müssen ein einzelnes @-Zeichen als erstes Zeichen aufweisen.

Examples

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

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

In diesem nächsten Beispiel ist das Ergebnis des skalaren Ausdrucks 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 ist, wird die Funktion nicht aufgerufen, und das Ergebnis lautet undefined.
  • Jede Eigenschaft, die einem nicht definierten Wert zugewiesen ist, wird übersprungen und beim Erstellen eines Objekts nicht im erstellten Objekt enthalten.
  • Jeder Elementwert, dem nicht definierter Wert zugewiesen wird, wird übersprungen und nicht in das erstellte Objekt einbezogen, wenn ein Array erstellt wird. Dieser Skip bewirkt, dass das nächste definierte Element so stattfindet, dass das erstellte Array keine Indizes überspringt.