다음을 통해 공유


SELECT - Cosmos DB의 쿼리 언어(Azure 및 패브릭)

이 절은 SELECT 쿼리 결과에서 반환할 필드를 식별합니다. 그런 다음, 절은 해당 필드를 JSON 결과 집합에 투영합니다.

모든 쿼리는 SELECT ANSI SQL 표준에 따라 절과 선택적으로 FROMWHERE 로 구성됩니다. 일반적으로 절의 원본 FROM 은 열거되고 WHERE 절은 원본에 필터를 적용하여 JSON 항목의 하위 집합을 검색합니다.

구문

SELECT <select_specification>  

<select_specification> ::=
      '*'
      | [DISTINCT] <object_property_list>
      | [DISTINCT] VALUE <scalar_expression> [[ AS ] value_alias]  
  
<object_property_list> ::=
{ <scalar_expression> [ [ AS ] property_alias ] } [ ,...n ]

Arguments

Description
select_specification 결과 집합에 대해 선택할 속성 또는 값입니다.
* 변경하지 않고 값을 검색해야 하므로 지정합니다. 특히 처리된 값이 개체인 경우 모든 속성이 검색됩니다.
object_property_list 검색할 속성 목록을 지정합니다. 반환된 각 값은 지정된 속성이 있는 개체입니다.
VALUE JSON 값이 전체 JSON 개체 대신 검색되도록 지정합니다. 이 인수는 property_list> 달리 <프로젝스된 값을 개체에 래핑하지 않습니다.
DISTINCT 프로젝싱된 속성의 중복을 제거해야 되도록 지정합니다.
scalar_expression 계산할 값을 나타내는 식입니다.

반환 형식

지정된 대로 프로젝스된 필드 또는 값을 반환합니다.

예시

이 섹션에는 이 쿼리 언어 구문을 사용하는 방법에 대한 예제가 포함되어 있습니다.

정적 문자열 값 선택

이 예제에서는 두 정적 문자열 값을 반환하고 두 값을 모두 포함하는 단일 개체가 있는 배열을 반환합니다. 값은 명명되지 않으므로 순차적으로 생성된 숫자를 사용하여 해당 json 필드의 이름을 지정합니다.

SELECT
  "Cosmic", "Works"
[
  {
    "$1": "Cosmic",
    "$2": "Works"
  }
]

프로젝트 필드

이 예제에서는 JSON 프로젝션을 사용하여 결과 JSON 개체의 정확한 구조 및 필드 이름을 미세 조정합니다. 여기서 JSON 개체는 이름이 지정 identifier 되고 model. 외부 JSON 개체는 아직 이름이 지정되지 않으므로 생성된 숫자($1)를 사용하여 이 필드의 이름을 지정합니다.

SELECT {
  identifier: p.name,
  model: p.sku
}
FROM
  products p
[
  {
    "$1": {
      "identifier": "Remdriel Shoes",
      "model": "61506"
    }
  },
  {
    "$1": {
      "identifier": "Tirevy trunks",
      "model": "73402"
    }
  },
  ...
]

프로젝트 정적 문자열

이 예제에서는 VALUE 키워드를 정적 문자열과 함께 사용하여 결과적으로 문자열 배열을 만듭니다.

SELECT VALUE
  "Cosmic Works"
[
  "Cosmic Works"
]

복잡한 프로젝션

이 예제에서 쿼리는 절, 키워드, VALUEFROM 절 및 JSON 프로젝션의 SELECT 조합을 사용하여 클라이언트가 구문 분석할 JSON 개체로 변환된 결과와 함께 공통 쿼리를 수행합니다.

SELECT VALUE {
  name: p.name,
  link: p.metadata.link,
  firstTag: p.tags[0]["value"]
}
FROM
  products p
[
  {
    "name": "Remdriel Shoes",
    "link": "https://www.adventure-works.com/remdriel-shoes/68719521615.p",
    "firstTag": "suede-leather-and-mesh"
  },
  {
    "name": "Tirevy trunks",
    "link": "https://www.adventure-works.com/tirevy-trunks/68719520573.p",
    "firstTag": "polyester"
  },
  ...
]

비고

  • SELECT * 구문은 절이 정확히 하나의 별칭을 선언한 경우에만 FROM 유효합니다. SELECT * 는 프로젝션이 필요하지 않은 경우에 유용할 수 있는 ID 프로젝션을 제공합니다. SELECT * 는 절을 지정하고 단일 입력 원본만 도입한 경우에만 FROM 유효합니다.
  • SELECT * 둘 다 SELECT <select_list> 구문 설탕이며 간단한 SELECT 문을 사용하여 표현할 수 있습니다.
  • SELECT * FROM ... AS from_alias ... 은 .에 해당합니다 SELECT from_alias FROM ... AS from_alias ....
  • SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] 은 .에 해당합니다 SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].