Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La SELECT cláusula identifica los campos que se van a devolver en los resultados de la consulta. A continuación, la cláusula proyecta esos campos en el conjunto de resultados JSON.
Cada consulta consta de una SELECT cláusula y, opcionalmente FROM , y WHERE cláusulas, según los estándares DE ANSI SQL. Normalmente, el origen de la FROM cláusula se enumera y la WHERE cláusula aplica un filtro en el origen para recuperar un subconjunto de elementos JSON.
Syntax
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 |
Propiedades o valor que se va a seleccionar para el conjunto de resultados. |
* |
Especifica que el valor se debe recuperar sin realizar ningún cambio. En concreto, si el valor procesado es un objeto , se recuperan todas las propiedades. |
object_property_list |
Especifica la lista de propiedades que se van a recuperar. Cada valor devuelto es un objeto con las propiedades especificadas. |
VALUE |
Especifica que el valor JSON se debe recuperar en lugar del objeto JSON completo. Este argumento, a diferencia <de property_list> no ajusta el valor proyectado en un objeto . |
DISTINCT |
Especifica que se deben quitar los duplicados de las propiedades proyectadas. |
scalar_expression |
Expresión que representa el valor que se va a calcular. |
Tipos de retorno
Devuelve los campos o valores proyectados según se especifica.
Examples
Esta sección contiene ejemplos de cómo usar esta construcción del lenguaje de consulta.
Selección de valores de cadena estáticos
En este ejemplo, dos valores de cadena estáticos y devuelve una matriz con un único objeto que contiene ambos valores. Dado que los valores no tienen nombre, se usa un número generado secuencial para asignar un nombre al campo json equivalente.
SELECT
"Cosmic", "Works"
[
{
"$1": "Cosmic",
"$2": "Works"
}
]
Campos de Project
En este ejemplo, la proyección JSON se usa para ajustar la estructura exacta y los nombres de campo del objeto JSON resultante. En este caso, se crea un objeto JSON con campos denominados identifier y model. El objeto JSON externo todavía no tiene nombre, por lo que se usa un número generado ($1) para asignar un nombre a este campo.
SELECT {
identifier: p.name,
model: p.sku
}
FROM
products p
[
{
"$1": {
"identifier": "Remdriel Shoes",
"model": "61506"
}
},
{
"$1": {
"identifier": "Tirevy trunks",
"model": "73402"
}
},
...
]
Cadena estática del proyecto
En este ejemplo, la palabra clave VALUE se usa con una cadena estática para crear una matriz de cadenas como resultado.
SELECT VALUE
"Cosmic Works"
[
"Cosmic Works"
]
Proyección compleja
En este ejemplo, la consulta usa una combinación de una SELECT cláusula , la VALUE palabra clave , una FROM cláusula y la proyección JSON para realizar una consulta común con los resultados transformados en un objeto JSON para que el cliente analice.
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"
},
...
]
Observaciones
- La
SELECT *sintaxis solo es válida siFROMla cláusula ha declarado exactamente un alias.SELECT *proporciona una proyección de identidad, que puede ser útil si no se necesita ninguna proyección.SELECT *solo es válido siFROMse especifica la cláusula y solo se introduce un único origen de entrada. - Tanto
SELECT <select_list>comoSELECT *son azúcar sintáctica y se pueden expresar mediante instrucciones simplesSELECT. - La expresión
SELECT * FROM ... AS from_alias ...es equivalente aSELECT from_alias FROM ... AS from_alias .... - La expresión
SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...]es equivalente aSELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].