다음을 통해 공유


Azure Cosmos DB for NoSQL의 3항 및 병합 연산자

적용 대상: NoSQL

Azure Cosmos DB for NoSQL의 3항 및 병합 연산자는 식을 평가하고 부울 피연산자 또는 필드가 있는지 여부에 따라 결과를 반환합니다. 3항 및 병합 연산자는 모두 C# 및 JavaScript와 같은 인기 있는 프로그래밍 언어와 유사하게 작동합니다. 3항(?) 및 병합(??) 연산자를 사용하여 반구조적 또는 혼합 형식 데이터에 대해 복원력이 있는 조건식을 작성합니다.

삼항 연산자

? 연산자는 첫 번째 식의 평가에 따라 값을 반환합니다.

구문

<bool_expr> ?  
    <expr_true> : 
    <expr_false>

인수

설명
bool_expr 부울 식입니다.
expr_true bool_exprtrue로 평가하는 경우 평가할 식입니다.
expr_false bool_exprfalse로 평가하는 경우 평가할 식입니다.

예제

컨테이너에서 이러한 항목을 고려합니다. 가격 책정과 관련된 여러 메타데이터 속성이 포함되며 속성 중 하나가 모든 항목에 존재하지 않습니다.

[
  {
    "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 = true 식과 동일한 onSale 식을 평가합니다. 그런 다음, 쿼리는 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