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 true
returnerar du alternativet för det första uttrycket. Annars returnerar du det andra uttrycksalternativet.
IIF(<bool_expr>, <true_expr>, <not_true_expr>)
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 . |
Returnerar ett uttryck som kan vara av vilken typ som helst.
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
}
]
- 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.