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_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 = 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