适用范围: 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
  }
]
备注
- 此函数类似于各种编程语言中的三元条件运算符。
 - 此函数不使用索引。