Operatori ternari e coalesce in Azure Cosmos DB per NoSQL
SI APPLICA A: NoSQL
Gli operatori ternari e coalesce in Azure Cosmos DB per NoSQL valutano le espressioni e restituiscono un risultato a seconda di un operando booleano o se esiste un campo. Sia gli operatori ternari che gli operatori coalesce funzionano in modo analogo ai linguaggi di programmazione più diffusi, ad esempio C# e JavaScript. Usare gli operatori ternari (?
) e coalesce () per??
creare espressioni condizionali resilienti rispetto ai dati semistrutturati o misti.
Operatore ternario
L'operatore ?
restituisce un valore a seconda della valutazione della prima espressione.
Sintassi
<bool_expr> ?
<expr_true> :
<expr_false>
Argomenti
Descrizione | |
---|---|
bool_expr |
Espressione booleana. |
expr_true |
Espressione da valutare se bool_expr restituisce true . |
expr_false |
Espressione da valutare se bool_expr restituisce false . |
Esempi
Considerare questi elementi in un contenitore. Contengono più proprietà di metadati correlate ai prezzi e una delle proprietà non esiste in tutti gli elementi.
[
{
"name": "Stangincy trekking poles",
"price": 24.50,
"onCloseout": false,
"onSale": true,
"collapsible": true
},
{
"name": "Vimero hiking poles",
"price": 24.50,
"onCloseout": false,
"onSale": false
},
{
"name": "Kramundsen trekking poles",
"price": 24.50,
"onCloseout": true,
"onSale": true,
"collapsible": false
}
]
Questa query valuta l'espressione onSale
, equivalente a onSale = true
. La query restituisce quindi il prezzo moltiplicato per 0.85
se true
o il prezzo invariato se false
.
SELECT
p.name,
p.price AS subtotal,
p.onSale ? (p.price * 0.85) : p.price AS total
FROM
products p
[
{
"name": "Stangincy trekking poles",
"subtotal": 24.5,
"total": 20.825
},
{
"name": "Vimero hiking poles",
"subtotal": 24.5,
"total": 24.5
},
{
"name": "Kramundsen trekking poles",
"subtotal": 24.5,
"total": 20.825
}
]
È anche possibile annidare le chiamate all'operatore ?
. In questo esempio viene aggiunto un calcolo aggiuntivo basato su una seconda proprietà (taxFree
)
SELECT
p.name,
p.price AS subtotal,
p.onCloseout ? (p.price * 0.55) : p.onSale ? (p.price * 0.85) : p.price AS total
FROM
products p
[
{
"name": "Stangincy trekking poles",
"subtotal": 24.5,
"total": 20.825
},
{
"name": "Vimero hiking poles",
"subtotal": 24.5,
"total": 24.5
},
{
"name": "Kramundsen trekking poles",
"subtotal": 24.5,
"total": 13.475000000000001
}
]
Come con altri operatori di query, l'operatore ?
esclude gli elementi se le proprietà a cui si fa riferimento sono mancanti o i tipi confrontati sono diversi.
Operatore Coalesce
Usare l'operatore per verificare in modo efficiente la presenza di una proprietà in un elemento durante l'esecuzione ??
di query su dati semistrutturati o di tipo misto.
Ad esempio, questa query presuppone che qualsiasi elemento in cui la proprietà collapsible
non sia presente, non sia compresso.
SELECT
p.name,
p.collapsible ?? false AS isCollapsible
FROM
products p
Contenuto correlato
- Clausola
SELECT
- Parole chiave
- Operatori logici