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

备注

  • 此函数类似于各种编程语言中的三元条件运算符。
  • 此函数不使用索引。

另请参阅