共用方式為


適用於 NoSQL 的 Azure Cosmos DB 中的三元運算子和聯合運算符

適用於:NoSQL

適用於 NoSQL 的 Azure Cosmos DB 中的三元運算符會評估表達式,並根據布爾操作數或字段存在,傳回結果。 三元運算符和聯合運算子的功能與 C# 和 JavaScript 等熱門程式設計語言類似。 使用三元 () 和聯合運算符???來建置可針對半結構化或混合型別數據具有復原性的條件表達式。

三元運算子

運算子 ? 會根據第一個表達式的評估傳回值。

語法

<bool_expr> ?  
    <expr_true> : 
    <expr_false>

引數

描述
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。 然後,查詢會傳回乘以 if true 的價格0.85,如果 為 ,則傳回價格不變。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