Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
Операторы ternary и объединения в Azure Cosmos DB для NoSQL вычисляют выражения и возвращают результат в зависимости от логического операнда или поля. Операторы тернари и объединения работают аналогично популярным языкам программирования, таким как C# и JavaScript. Используйте ternary () и операторы объединения (?
??
) для создания условных выражений, устойчивых к полуструктурированных или смешанных данных.
Тернарный оператор
Оператор ?
возвращает значение в зависимости от оценки первого выражения.
Синтаксис
<bool_expr> ?
<expr_true> :
<expr_false>
Аргументы
Description | |
---|---|
bool_expr |
Логическое выражение. |
expr_true |
Выражение для оценки, если bool_expr вычисляется true . |
expr_false |
Выражение для оценки, если bool_expr вычисляется false . |
Примеры
Рассмотрим эти элементы в контейнере. Они содержат несколько свойств метаданных, связанных с ценами, и один из свойств не существует во всех элементах.
[
{
"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
}
]
Этот запрос вычисляет выражение onSale
, эквивалентное onSale = true
. Затем запрос возвращает цену, умноженную на 0.85
то, если true
или цена без изменений 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
}
]
Вы также можете вложить вызовы оператора ?
. В этом примере добавляется дополнительный расчет на основе второго свойства (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
}
]
Как и в случае с другими операторами запросов, оператор исключает элементы, ?
если указанные свойства отсутствуют или сравниваемые типы отличаются.
Оператор объединения
??
Используйте оператор, чтобы эффективно проверять наличие свойства в элементе при запросе к полуструктурированных или смешанным данным.
Например, этот запрос предполагает, что любой элемент, в котором свойство collapsible
отсутствует, не является свертым.
SELECT
p.name,
p.collapsible ?? false AS isCollapsible
FROM
products p