Dela via


IIF (NoSQL-fråga)

GÄLLER FÖR: NoSQL

Utvärderar ett booleskt uttryck och returnerar resultatet av ett av två uttryck beroende på resultatet av det booleska uttrycket. Om det booleska uttrycket utvärderas till truereturnerar du alternativet för det första uttrycket. Annars returnerar du det andra uttrycksalternativet.

Syntax

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

Argument

beskrivning
bool_expr Ett booleskt uttryck som utvärderas och används för att avgöra vilket av de två kompletterande uttrycken som ska användas.
true_expr Uttrycket som ska returneras om det booleska uttrycket utvärderas till true.
not_true_expr Uttrycket som ska returneras om det booleska uttrycket utvärderas till NOT true.

Returtyper

Returnerar ett uttryck som kan vara av vilken typ som helst.

Exempel

Det första exemplet utvärderar ett statiskt booleskt uttryck och returnerar ett av två potentiella uttryck.

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

Det här exemplet utvärderar ett av två potentiella uttryck på flera objekt i en container baserat på ett uttryck som utvärderar en boolesk egenskap.

[
  {
    "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
    }
  }
]

Frågan använder fält i de ursprungliga objekten.

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

Kommentarer

  • Den här funktionen liknar den villkorsstyrda operatorn ternary på olika programmeringsspråk. Mer information finns i villkorsoperatorn ternary.
  • Den här funktionen använder inte indexet.

Se även