Share via


適用于 NoSQL 的 Azure Cosmos DB 中的純量運算式

適用於:NoSQL

SELECT支援純量運算式。 純量運算式結合了符號及運算子,可以加以評估以取得單一值。 純量運算式的例子包括常數、屬性參考、陣列元素參考、別名參考或函式呼叫。 使用運算子可將純量運算式結合為複雜運算式。

語法

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

引數

描述
<constant> 代表常數值。 請參閱<常數>一節以取得詳細資料。
input_alias 代表在 FROM 子句中導入,且由 input_alias 定義的值。
此值不保證為未定義 – 輸入中的未定義值會略過。
<scalar_expression>.property_name 代表物件屬性值。 若屬性不存在或已在非物件的值中參考,則運算式會評估為未定義的值。
<scalar_expression>'['"property_name"|array_index']' 代表名稱為 property_name 的屬性值,或具有陣列索引 array_index 的陣列元素。 若屬性不存在或屬性/陣列索引已在非物件/陣列的值中參考,則運算式會評估為未定義的值。
unary_operator <scalar_expression> 代表已套用至單一值的運算子。
<scalar_expression> binary_operator <scalar_expression> 代表已套用至兩個值的運算子。
<scalar_function_expression> 代表由函式呼叫結果定義的值。
udf_scalar_function 使用者定義純量值函式的名稱。
builtin_scalar_function 內建純量值函式的名稱。
<create_object_expression> 代表搭配指定屬性及其值所建立之新物件取得的值。
<create_array_expression> 代表搭配指定值作為元素所建立之新物件取得的值
parameter_name 代表指定參數名字的值。 參數名稱必須帶有單一 @ 作為第一個字元。

範例

純量運算式最常見的範例是數學方程式。

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

在下一個範例中,純量運算式的結果是布林值:

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

備註

  • 呼叫內建或使用者定義的純量函式時,必須定義所有引數。 如果未定義任何引數,則不會呼叫函式,結果為 undefined
  • 在建立物件時,會略過指派未定義值的任何屬性,而不會包含在建立的物件中。
  • 在建立陣列時,會略過指派 未定義 值的任何專案值,而不會包含在建立的物件中。 這個 skip 會導致下一個已定義的元素取代其位置,如此一來,建立的陣列就不會略過索引。