이 절은 SELECT 쿼리 결과에서 반환할 필드를 식별합니다. 그런 다음, 절은 해당 필드를 JSON 결과 집합에 투영합니다.
모든 쿼리는 SELECT ANSI SQL 표준에 따라 절과 선택적으로 FROM 절 WHERE 로 구성됩니다. 일반적으로 절의 원본 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...].