適用於 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
。 - 在建立物件時,會略過指派未定義值的任何屬性,而且不會包含在建立的物件中。
- 在建立陣列時,會略過指派 未定義 值的任何專案值,而且不會包含在建立的物件中。 這個略過會讓下一個定義的元素以建立的陣列不會略過索引的方式取代它的位置。