Delen via


SELECT - Querytaal in Cosmos DB (in Azure en Fabric)

De SELECT component identificeert velden die moeten worden geretourneerd in queryresultaten. De component projecteert deze velden vervolgens in de JSON-resultatenset.

Elke query bestaat uit een SELECT component en optioneel FROM en WHERE componenten, volgens ANSI SQL-standaarden. Normaal gesproken wordt de bron in de FROM component geïnventariseerd en de WHERE component past een filter toe op de bron om een subset van JSON-items op te halen.

Syntaxis

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 Eigenschappen of waarde die moeten worden geselecteerd voor de resultatenset.
* Hiermee geeft u op dat de waarde moet worden opgehaald zonder wijzigingen aan te brengen. Met name als de verwerkte waarde een object is, worden alle eigenschappen opgehaald.
object_property_list Hiermee geeft u de lijst met eigenschappen die moeten worden opgehaald. Elke geretourneerde waarde is een object met de opgegeven eigenschappen.
VALUE Hiermee geeft u op dat de JSON-waarde moet worden opgehaald in plaats van het volledige JSON-object. Dit argument, in tegenstelling tot <property_list> de verwachte waarde niet in een object verpakt.
DISTINCT Hiermee geeft u op dat duplicaten van projecteigenschappen moeten worden verwijderd.
scalar_expression Expressie die de waarde vertegenwoordigt die moet worden berekend.

Retourtypen

Retourneert de verwachte velden of waarden zoals opgegeven.

Voorbeelden

Deze sectie bevat voorbeelden van het gebruik van deze querytaalconstructie.

Statische tekenreekswaarden selecteren

In dit voorbeeld worden twee statische tekenreekswaarden geretourneerd en wordt een matrix geretourneerd met één object dat beide waarden bevat. Omdat de waarden geen naam hebben, wordt een opeenvolgend gegenereerd getal gebruikt om het equivalente json-veld een naam te geven.

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

Projectvelden

In dit voorbeeld wordt JSON-projectie gebruikt om de exacte structuur en veldnamen voor het resulterende JSON-object nauwkeurig af te stemmen. Hier wordt een JSON-object gemaakt met velden met de naam identifier en model. Het externe JSON-object is nog steeds niet benoemd, dus er wordt een gegenereerd getal ($1) gebruikt om dit veld een naam te geven.

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

Statische tekenreeks van Project

In dit voorbeeld wordt het trefwoord VALUE gebruikt met een statische tekenreeks om als resultaat een matrix met tekenreeksen te maken.

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

Complexe projectie

In dit voorbeeld gebruikt de query een combinatie van een SELECT component, het VALUE trefwoord, een FROM component en JSON-projectie om een algemene query uit te voeren met de resultaten die zijn getransformeerd naar een JSON-object voor de client om te parseren.

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

Opmerkingen

  • De SELECT * syntaxis is alleen geldig als FROM de component precies één alias heeft gedeclareerd. SELECT * biedt een identiteitsprojectie, wat handig kan zijn als er geen projectie nodig is. SELECT * is alleen geldig als FROM de component is opgegeven en slechts één invoerbron heeft geïntroduceerd.
  • Beide SELECT <select_list> en SELECT * zijn syntactische suiker en kunnen worden uitgedrukt met behulp van eenvoudige SELECT instructies.
  • De expressie SELECT * FROM ... AS from_alias ... is gelijk aan SELECT from_alias FROM ... AS from_alias ....
  • De expressie SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] is gelijk aan SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].