다음을 통해 공유


Azure Cosmos DB for NoSQL의 키워드

적용 대상: NoSQL

Azure Cosmos DB for NoSQL의 쿼리 언어에는 확장 기능을 위해 쿼리에 사용되는 예약된 키워드 집합이 포함되어 있습니다.

BETWEEN

BETWEEN 키워드는 대상 값이 지정된 두 값(포함) 사이인지 여부를 나타내는 부울로 평가됩니다.

WHERE 절에 BETWEEN 키워드를 사용하면 문자열 또는 숫자 값 범위에 대한 결과를 필터링하는 쿼리를 표현할 수 있습니다. 예를 들어 다음 쿼리는 가격이 17.2525.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