Sdílet prostřednictvím


IIF (dotaz NoSQL)

PLATÍ PRO: NoSQL

Vyhodnotí logický výraz a vrátí výsledek jednoho ze dvou výrazů v závislosti na výsledku logického výrazu. Pokud se logický výraz vyhodnotí jako truelogický, vrátí první možnost výrazu. V opačném případě vrátí druhou možnost výrazu.

Syntaxe

IIF(<bool_expr>, <true_expr>, <not_true_expr>)

Argumenty

Popis
bool_expr Logický výraz, který se vyhodnocuje a používá k určení dvou doplňkových výrazů, které se mají použít.
true_expr Výraz, který se má vrátit, pokud se logický výraz vyhodnotí jako true.
not_true_expr Výraz, který se má vrátit, pokud je logický výraz vyhodnocen jako NOT true.

Návratové typy

Vrátí výraz, který může být libovolného typu.

Příklady

Tento první příklad vyhodnotí statický logický výraz a vrátí jeden ze dvou potenciálních výrazů.

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

Tento příklad vyhodnotí jeden ze dvou potenciálních výrazů na více položkách v kontejneru na základě výrazu, který vyhodnotí logickou vlastnost.

[
  {
    "name": "Estrel Set Cutlery",
    "onSale": true,
    "category": "camp-utensils",
    "pricing": {
      "msrp": 55.95,
      "sale": 30.85
    }
  },
  {
    "name": "Willagno Spork",
    "onSale": false,
    "category": "camp-utensils",
    "pricing": {
      "msrp": 20.15,
      "sale": 12.55
    }
  }
]

Dotaz používá pole v původních položkách.

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

Poznámky

  • Tato funkce se podobá ternárnímu podmíněnému operátoru v různých programovacích jazycích. Další informace naleznete v tématu ternární podmíněný operátor.
  • Tato funkce nevyužívá index.

Viz také