Sdílet prostřednictvím


SELECT – Dotazovací jazyk ve službě Cosmos DB (v Azure a prostředcích infrastruktury)

Klauzule SELECT identifikuje pole, která se mají vrátit ve výsledcích dotazu. Klauzule pak tato pole prodá do sady výsledků JSON.

Každý dotaz se skládá z SELECT klauzule a volitelně FROM a WHERE klauzulí podle standardů ANSI SQL. Obvykle se zdroj v FROM klauzuli vyčíslí a WHERE klauzule použije filtr na zdroj k načtení podmnožina položek JSON.

Syntaxe

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 Vlastnosti nebo hodnota, které se mají vybrat pro sadu výsledků.
* Určuje, že hodnota by se měla načíst bez provedení jakýchkoli změn. Konkrétně pokud je zpracovaná hodnota objekt, načtou se všechny vlastnosti.
object_property_list Určuje seznam vlastností, které se mají načíst. Každá vrácená hodnota je objekt se zadanými vlastnostmi.
VALUE Určuje, že se hodnota JSON má načíst místo kompletního objektu JSON. Tento argument na rozdíl od <property_list> nezabalí projektovanou hodnotu do objektu.
DISTINCT Určuje, že duplicity projektovaných vlastností by měly být odebrány.
scalar_expression Výraz představující hodnotu, která se má vypočítat.

Návratové typy

Vrátí zadaná projektovaná pole nebo hodnoty.

Examples

Tato část obsahuje příklady použití tohoto konstruktoru dotazovacího jazyka.

Výběr statických hodnot řetězců

V tomto příkladu dvě statické řetězcové hodnoty a vrátí matici s jedním objektem obsahujícím obě hodnoty. Vzhledem k tomu, že hodnoty nejsou pojmenovány, sekvenční vygenerované číslo slouží k pojmenování ekvivalentního pole JSON.

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

Pole projektu

V tomto příkladu se projekce JSON používá k vyladění přesné struktury a názvů polí pro výsledný objekt JSON. Zde se vytvoří objekt JSON s pojmenovanými identifier poli a model. Vnější objekt JSON je stále nepojmenovaný, takže vygenerované číslo ($1) se používá k pojmenování tohoto pole.

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

Statický řetězec projektu

V tomto příkladu se klíčové slovo VALUE používá se statickým řetězcem k vytvoření pole řetězců jako výsledek.

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

Složitá projekce

V tomto příkladu dotaz používá kombinaci klauzule, VALUE klíčového SELECT slova, FROM klauzule a projekce JSON k provedení společného dotazu s výsledky transformovanými na objekt JSON, aby klient parsoval.

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

Poznámky

  • Syntaxe SELECT * je platná pouze v případě, že FROM klauzule deklarovala přesně jeden alias. SELECT * poskytuje projekci identity, která může být užitečná, pokud není nutná žádná projekce. SELECT * je platná pouze v případě, že FROM je zadaná klauzule a zavádí se pouze jeden vstupní zdroj.
  • Oba SELECT <select_list> a SELECT * jsou syntaktický cukr a lze je vyjádřit pomocí jednoduchých SELECT příkazů.
  • Výraz SELECT * FROM ... AS from_alias ... je ekvivalentní výrazu SELECT from_alias FROM ... AS from_alias ....
  • Výraz SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] je ekvivalentní výrazu SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].