Compartilhar via


IIF (consulta NoSQL)

APLICA-SE A: NoSQL

Avalia uma expressão booliana e retorna o resultado de uma das duas expressões, dependendo do resultado da expressão booliana. Se a expressão booliana for avaliada como true, retorna a primeira opção de expressão. Caso contrário, retorna segunda opção de expressão.

Sintaxe

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

Argumentos

Descrição
bool_expr Uma expressão booliana, que é avaliada e usada para determinar quais das duas expressões complementares usar.
true_expr A expressão a ser retornada se a expressão booliana for avaliada como true.
not_true_expr A expressão a ser retornada se a expressão booleana avaliada como NOT true.

Tipos de retorno

Retorna uma expressão, que pode ser de qualquer tipo.

Exemplos

Esse primeiro exemplo avalia uma expressão booliana estática e retorna uma das duas expressões em potencial.

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

Esse exemplo avalia uma das duas expressões potenciais em vários itens em um contêiner com base em uma expressão que avalia uma propriedade booliana.

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

A consulta usa campos nos itens originais.

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

Comentários

  • Essa função é semelhante ao operador condicional ternário em várias linguagens de programação. Para obter mais informações, consulte operador condicional ternário.
  • Essa função não utiliza o índice.

Confira também