Azure Cosmos DB for NoSQL의 키워드
적용 대상: NoSQL
Azure Cosmos DB for NoSQL의 쿼리 언어에는 확장 기능을 위해 쿼리에 사용되는 예약된 키워드 집합이 포함되어 있습니다.
BETWEEN
BETWEEN
키워드는 대상 값이 지정된 두 값(포함) 사이인지 여부를 나타내는 부울로 평가됩니다.
WHERE
절에 BETWEEN
키워드를 사용하면 문자열 또는 숫자 값 범위에 대한 결과를 필터링하는 쿼리를 표현할 수 있습니다. 예를 들어 다음 쿼리는 가격이 17.25
와 25.50
(포함) 사이에 있는 모든 항목을 반환합니다.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
다음 예제와 같이 SELECT
절에서 BETWEEN
키워드를 사용할 수도 있습니다.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
참고 항목
API for NoSQL에서는 ANSI SQL과 달리 혼합 형식의 속성에 대한 범위 쿼리를 표현할 수 있습니다. 예를 들어 price
는 항목에 따라 5.0
같은 숫자이거나 fifteenDollars
같은 문자열일 수 있습니다. 이 경우 JavaScript에서와 같이 서로 다른 두 형식을 비교할 때 undefined
가 발생하므로 항목을 건너뜁니다.
DISTINCT
DISTINCT
키워드는 프로젝션된 쿼리 결과에서 중복 항목을 제거합니다.
이 예제에서 쿼리는 각 제품 범주에 대한 값을 프로젝션합니다. 두 범주가 동일한 경우 단일 항목만 결과에 반환됩니다.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
대상 필드가 없더라도 값을 프로젝션할 수 있습니다. 이 경우 필드가 항목 중 하나에 없으므로 쿼리는 특정 고유 값에 대한 빈 개체를 반환합니다.
SELECT DISTINCT
p.category
FROM
products p
결과는 다음과 같습니다.
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
LIKE
특정 문자열이 지정한 패턴과 일치하는지 여부에 따라 부울 값을 반환합니다. 패턴은 일반 문자와 와일드카드 문자를 포함할 수 있습니다.
팁
키워드 또는 시스템 함수를 사용하여 논리적으로 동등한 쿼리를 LIKE
작성할 RegexMatch
수 있습니다. 어떤 옵션을 선택하든 동일한 인덱스 사용이 관찰됩니다. 사용할 옵션 선택은 주로 구문 기본 설정에 따라 크게 좌우됩니다.
참고 항목
LIKE
는 인덱스를 사용할 수 있기 때문에 LIKE
를 사용하여 비교하는 속성에 대해 범위 인덱스를 만들어야 합니다.
LIKE와 함께 다음 와일드카드 문자를 사용할 수 있습니다.
설명 | 예제 | |
---|---|---|
% |
0개 이상의 문자를 가진 문자열 | WHERE c.description LIKE "%SO%PS%" |
_ (밑줄) |
단일 문자 | WHERE c.description LIKE"%SO_PS%" |
[ ] |
지정한 범위([a-f] ) 또는 집합([abcdef] ) 내에 있는 단일 문자 |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
지정한 범위([^a-f] ) 또는 집합([^abcdef] ) 내에 없는 단일 문자 |
WHERE c.description LIKE "%SO[^abc]PS%" |
%
문자는 0개 이상의 문자로 이루어진 문자열과 일치합니다. 예를 들어 패턴의 시작과 끝에 %
를 배치하면 다음 쿼리는 지정된 필드에 해당 구를 부분 문자열로 포함하는 모든 항목을 반환합니다.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
패턴의 끝에만 %
문자를 사용한 경우 설명이 fruit
로 시작하는 항목만 반환됩니다.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
마찬가지로 패턴의 시작 부분에 있는 와일드카드는 값을 접두사로 지정된 값과 일치시키려는 것을 나타냅니다.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
NOT
키워드는 LIKE
키워드의 식 평가 결과를 반전시킵니다. 이 예제에서는 LIKE
식과 일치하지 않는 모든 항목을 반환합니다.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
ESCAPE
절을 사용하여 하나 이상의 와일드카드 문자가 포함된 패턴을 검색할 수 있습니다. 예를 들어 20%
문자열이 포함된 설명을 검색하려는 경우 %
를 와일드카드 문자로 해석하지 않아야 합니다. 이 예제에서는 ^
를 이스케이프 문자로 해석하므로 %
의 특정 인스턴스를 이스케이프할 수 있습니다.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
와일드카드 문자를 대괄호로 묶어 리터럴 문자로 처리할 수 있습니다. 와일드카드 문자를 대괄호로 묶으면 특수 특성이 제거됩니다. 다음 표는 리터럴 문자의 예를 보여줍니다.
구문 분석된 값 | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
IN
키워드를 사용하여 지정한 값과 일치하는 값이 목록에 있는지 확인할 수 있습니다. 예를 들어 다음 쿼리는 범주가 목록의 값 중 하나 이상과 일치하는 모든 항목을 반환합니다.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
팁
IN
필터에 파티션 키를 포함하면 쿼리가 관련 파티션으로만 자동으로 필터링됩니다.
맨 위
TOP
키워드는 처음 N
개의 쿼리 결과를 정의되지 않은 순서로 반환합니다. ORDER BY
절에 TOP
을 사용하여 결과를 처음 N
개의 정렬된 값으로 제한하는 것이 좋습니다. 이 두 절을 결합하는 것은 TOP
가 영향을 미치는 행을 예측 가능하게 나타내는 유일한 방법입니다.
다음 예제와 같이 TOP
에 상수 값을 사용하거나 매개 변수가 있는 쿼리를 포함하는 변수 값을 사용할 수 있습니다.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC