Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Предложение SELECT определяет поля, возвращаемые в результатах запроса. Затем предложение проецит эти поля в результирующий набор JSON.
Каждый запрос состоит из SELECT предложения и при необходимости FROM и WHERE предложений в соответствии со стандартами ANSI SQL. Как правило, источник в 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"
]
Сложная проекция
В этом примере запрос использует сочетание предложения, ключевого SELECT слова, VALUEFROM предложения и проекции JSON для выполнения общего запроса с результатами, преобразованным в объект 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 *предоставляет проекцию удостоверений, которая может быть полезна, если проекция не требуется.SELECT *является допустимым только в том случае, еслиFROMуказано предложение и введено только один источник входных данных. - Оба
SELECT <select_list>иSELECT *являются синтаксическим сахаром и могут быть выражены с помощью простых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...].