Condividi tramite


SELECT - Linguaggio di query in Cosmos DB (in Azure e Fabric)

La SELECT clausola identifica i campi da restituire nei risultati della query. La clausola proietta quindi tali campi nel set di risultati JSON.

Ogni query è costituita da una SELECT clausola e, facoltativamente FROMWHERE , e clausole, in base agli standard SQL ANSI. In genere, l'origine nella FROM clausola viene enumerata e la WHERE clausola applica un filtro sull'origine per recuperare un subset di elementi JSON.

Sintassi

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 Proprietà o valore da selezionare per il set di risultati.
* Specifica che il valore deve essere recuperato senza apportare modifiche. In particolare, se il valore elaborato è un oggetto , vengono recuperate tutte le proprietà.
object_property_list Specifica l'elenco delle proprietà da recuperare. Ogni valore restituito è un oggetto con le proprietà specificate.
VALUE Specifica che il valore JSON deve essere recuperato anziché l'oggetto JSON completo. Questo argomento, a differenza <di property_list> non esegue il wrapping del valore proiettato in un oggetto .
DISTINCT Specifica che i duplicati delle proprietà proiettate devono essere rimossi.
scalar_expression Espressione che rappresenta il valore da calcolare.

Tipi restituiti

Restituisce i campi o i valori proiettati come specificato.

Esempi

Questa sezione contiene esempi di come usare questo costrutto di linguaggio di query.

Selezionare valori stringa statici

In questo esempio due valori stringa statici e restituisce una matrice con un singolo oggetto contenente entrambi i valori. Poiché i valori sono senza nome, viene usato un numero generato sequenziale per denominare il campo JSON equivalente.

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

Campi progetto

In questo esempio, la proiezione JSON viene usata per ottimizzare la struttura esatta e i nomi dei campi per l'oggetto JSON risultante. In questo caso viene creato un oggetto JSON con campi denominati identifier e model. L'oggetto JSON esterno è ancora senza nome, quindi viene usato un numero generato ($1) per denominare questo campo.

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

Stringa statica del progetto

In questo esempio, la parola chiave VALUE viene usata con una stringa statica per creare una matrice di stringhe come risultato.

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

Proiezione complessa

In questo esempio, la query usa una combinazione di una SELECT clausola, la VALUE parola chiave, una FROM clausola e la proiezione JSON per eseguire una query comune con i risultati trasformati in un oggetto JSON da analizzare dal client.

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"
  },
  ...
]

Osservazioni:

  • La sintassi è valida solo se FROM la SELECT * clausola ha dichiarato esattamente un alias. SELECT * fornisce una proiezione di identità, che può essere utile se non è necessaria alcuna proiezione. SELECT * è valido solo se FROM la clausola viene specificata e introdotta solo una singola origine di input.
  • Sia SELECT <select_list> che SELECT * sono zucchero sintattico e possono essere espressi usando SELECT semplici istruzioni.
  • L'espressione SELECT * FROM ... AS from_alias ... equivale a SELECT from_alias FROM ... AS from_alias ....
  • L'espressione SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] equivale a SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].