Megosztás a következőn keresztül:


SELECT - Lekérdezési nyelv a Cosmos DB-ben (az Azure-ban és a Fabricben)

A SELECT záradék azonosítja a lekérdezési eredményekben visszaadandó mezőket. A záradék ezután a JSON-eredményhalmazba írja be ezeket a mezőket.

Minden lekérdezés egy SELECT kikötésből és opcionálisan FROMWHERE , valamint az ANSI SQL-szabványonkénti záradékokból áll. A záradék forrása FROM általában enumerálva van, és a WHERE záradék szűrőt alkalmaz a forrásra a JSON-elemek egy részhalmazának lekéréséhez.

Szemantika

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 Az eredményhalmazhoz kijelölendő tulajdonságok vagy értékek.
* Megadja, hogy az értéket módosítás nélkül kell lekérni. Pontosabban, ha a feldolgozott érték egy objektum, a rendszer minden tulajdonságot lekér.
object_property_list Megadja a lekérendő tulajdonságok listáját. Minden visszaadott érték egy objektum, amely a megadott tulajdonságokkal rendelkezik.
VALUE Megadja, hogy a JSON-értéket a teljes JSON-objektum helyett kell lekérni. Ez az argumentum a property_list> ellentétben <nem csomagolja be a tervezett értéket egy objektumba.
DISTINCT Megadja, hogy a tervezett tulajdonságok duplikált példányait el kell távolítani.
scalar_expression A kiszámítandó értéket képviselő kifejezés.

Visszatérési típusok

A megadott módon adja vissza a tervezett mezőket vagy értékeket.

Példák

Ez a szakasz példákat tartalmaz a lekérdezési nyelv szerkezetének használatára.

Statikus sztringértékek kiválasztása

Ebben a példában két statikus sztringérték, és egy tömböt ad vissza egyetlen, mindkét értéket tartalmazó objektummal. Mivel az értékek névtelenek, a rendszer szekvenciálisan generált számot használ az egyenértékű JSON-mező elnevezéséhez.

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

Projektmezők

Ebben a példában a JSON-vetítés a kapott JSON-objektum pontos szerkezetének és mezőneveinek finomhangolására szolgál. Itt egy JSON-objektum jön létre nevesített és identifiermodel. A külső JSON-objektum továbbra is névtelen, ezért a mező elnevezéséhez egy generált szám ($1) használatos.

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

Projekt statikus sztringje

Ebben a példában az ÉRTÉK kulcsszó statikus sztringgel jön létre sztringtömbként.

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

Összetett kivetítés

Ebben a példában a lekérdezés egy SELECT záradék, egy VALUE kulcsszó, egy záradék és egy FROM JSON-előrejelzés kombinációjával hajt végre egy közös lekérdezést az ügyfél által elemezni kívánt JSON-objektummá átalakított eredményekkel.

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

Megjegyzések

  • A SELECT * szintaxis csak akkor érvényes, ha FROM a záradék pontosan egy aliast deklarált. SELECT * identitásvetítést biztosít, amely akkor lehet hasznos, ha nincs szükség kivetítésre. SELECT * csak akkor érvényes, ha FROM a záradék meg van adva, és csak egyetlen bemeneti forrást vezet be.
  • SELECT * Mindkettő SELECT <select_list> szintaktikus cukor, és egyszerű SELECT állításokkal fejezhető ki.
  • A kifejezés SELECT * FROM ... AS from_alias ... egyenértékű a következő kifejezéssel SELECT from_alias FROM ... AS from_alias ...: .
  • A kifejezés SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] egyenértékű a következő kifejezéssel SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...]: .