Udostępnij za pomocą


SELECT — Język zapytań w usłudze Cosmos DB (na platformie Azure i w sieci szkieletowej)

Klauzula SELECT identyfikuje pola, które mają być zwracane w wynikach zapytania. Klauzula następnie projektuje te pola w zestawie wyników JSON.

Każde zapytanie składa się z SELECT klauzuli i opcjonalnie FROM i WHERE klauzul zgodnie ze standardami ANSI SQL. Zazwyczaj źródło w klauzuli FROM jest wyliczane, a WHERE klauzula stosuje filtr w źródle w celu pobrania podzestawu elementów JSON.

Składnia

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 Właściwości lub wartość do wybrania dla zestawu wyników.
* Określa, że wartość powinna zostać pobrana bez wprowadzania żadnych zmian. W szczególności, jeśli przetworzona wartość jest obiektem, wszystkie właściwości są pobierane.
object_property_list Określa listę właściwości do pobrania. Każda zwrócona wartość jest obiektem z określonymi właściwościami.
VALUE Określa, że należy pobrać wartość JSON zamiast kompletnego obiektu JSON. Ten argument, w przeciwieństwie do <property_list> , nie opakowuje przewidywanej wartości w obiekcie.
DISTINCT Określa, że należy usunąć duplikaty przewidywanych właściwości.
scalar_expression Wyrażenie reprezentujące wartość do obliczenia.

Typy zwracane

Zwraca przewidywane pola lub wartości zgodnie z określonymi.

Przykłady

Ta sekcja zawiera przykłady użycia tej konstrukcji języka zapytań.

Wybieranie wartości statycznych ciągów

W tym przykładzie dwie statyczne wartości ciągu i zwraca tablicę z pojedynczym obiektem zawierającym obie wartości. Ponieważ wartości nie są nazwane, generowana sekwencyjnie liczba jest używana do nazywania równoważnego pola json.

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

Pola projektu

W tym przykładzie projekcja JSON służy do dokładnego dostrajania dokładnych nazw struktur i pól dla wynikowego obiektu JSON. W tym miejscu obiekt JSON jest tworzony z polami o nazwach identifier i model. Zewnętrzny obiekt JSON jest nadal nienazwany, więc wygenerowany numer ($1) jest używany do nadawania nazwy temu polu.

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

Ciąg statyczny projektu

W tym przykładzie słowo kluczowe VALUE jest używane z ciągiem statycznym w celu utworzenia tablicy ciągów w wyniku.

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

Projekcja złożona

W tym przykładzie zapytanie używa kombinacji klauzuli, VALUE słowa kluczowegoSELECT, FROM klauzuli i projekcji JSON, aby wykonać typowe zapytanie z wynikami przekształconymi w obiekt JSON, aby klient był analizowany.

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

Uwagi

  • Składnia jest prawidłowa tylko wtedy, gdy FROM klauzula SELECT * zadeklarowała dokładnie jeden alias. SELECT * zapewnia projekcję tożsamości, która może być przydatna, jeśli nie jest wymagana projekcja. SELECT * jest prawidłowy tylko wtedy, gdy FROM określono klauzulę i wprowadzono tylko jedno źródło wejściowe.
  • Zarówno SELECT <select_list> i SELECT * są cukrem składniowym i można je wyrazić przy użyciu prostych SELECT instrukcji.
  • Wyrażenie SELECT * FROM ... AS from_alias ... jest równoważne .SELECT from_alias FROM ... AS from_alias ...
  • Wyrażenie SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] jest równoważne .SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...]