IIF(NoSQL 查询)
适用范围: NoSQL
计算一个布尔表达式,并根据布尔表达式的结果返回两个表达式之一的结果。 如果布尔表达式的计算结果为 true
,则返回第一个表达式选项。 否则,返回第二个表达式选项。
语法
IIF(<bool_expr>, <true_expr>, <not_true_expr>)
参数
描述 | |
---|---|
bool_expr |
一个布尔表达式,用于计算并确定要使用两个补充表达式中的哪一个。 |
true_expr |
如果布尔表达式的计算结果为 true ,则返回的表达式。 |
not_true_expr |
如果布尔表达式的计算结果为 NOT true ,则返回的表达式。 |
返回类型
返回一个表达式,可以是任何类型的表达式。
示例
第一个示例计算静态布尔表达式,并返回两个潜在表达式之一。
SELECT VALUE {
evalTrue: IIF(true, 123, 456),
evalFalse: IIF(false, 123, 456),
evalNumberNotTrue: IIF(123, 123, 456),
evalStringNotTrue: IIF("ABC", 123, 456),
evalArrayNotTrue: IIF([1,2,3], 123, 456),
evalObjectNotTrue: IIF({"name": "Alice", "age": 20}, 123, 456)
}
[
{
"evalTrue": 123,
"evalFalse": 456,
"evalNumberNotTrue": 456,
"evalStringNotTrue": 456,
"evalArrayNotTrue": 456,
"evalObjectNotTrue": 456
}
]
此示例基于计算布尔属性的表达式,对容器中多个项的两个潜在表达式之一求值。
[
{
"id": "68719519221",
"name": "Estrel Set Cutlery",
"onSale": true,
"pricing": {
"msrp": 55.95,
"sale": 30.85
}
},
{
"id": "68719520367",
"name": "Willagno Spork",
"onSale": false,
"pricing": {
"msrp": 20.15,
"sale": 12.55
}
}
]
该查询使用原始项中的字段。
SELECT
p.name,
IIF(p.onSale, p.pricing.sale, p.pricing.msrp) AS price
FROM
products p
WHERE
p.category = "camp-utensils"
[
{
"name": "Estrel Set Cutlery",
"price": 30.85
},
{
"name": "Willagno Spork",
"price": 20.15
}
]
备注
- 此函数类似于各种编程语言中的三元条件运算符。
- 此函数不使用索引。