Aracılığıyla paylaş


SELECT - Cosmos DB'de sorgu dili (Azure ve Doku'da)

SELECT yan tümcesi, sorgu sonuçlarında döndürülecek alanları tanımlar. Yan tümcesi daha sonra bu alanları JSON sonuç kümesine projeler.

Her sorgu ANSI SQL standartlarına göre bir SELECT yan tümceden ve isteğe bağlı olarak FROM ve WHERE yan tümcelerinden oluşur. Genellikle yan tümcesindeki FROM kaynak numaralandırılır ve WHERE yan tümcesi, JSON öğelerinin bir alt kümesini almak için kaynağa bir filtre uygular.

Sözdizimi

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 Sonuç kümesi için seçilecek özellikler veya değer.
* Herhangi bir değişiklik yapmadan değerin alınması gerektiğini belirtir. Özellikle işlenen değer bir nesneyse, tüm özellikler alınır.
object_property_list Alınacak özelliklerin listesini belirtir. Döndürülen her değer, belirtilen özelliklere sahip bir nesnedir.
VALUE JSON değerinin tam JSON nesnesi yerine alınması gerektiğini belirtir. Bu bağımsız değişken, property_list> aksine <nesnedeki öngörülen değeri sarmalamaz.
DISTINCT Öngörülen özelliklerin yinelenenlerinin kaldırılması gerektiğini belirtir.
scalar_expression Hesaplanacak değeri temsil eden ifade.

Dönüş türleri

Belirtilen öngörülen alanları veya değerleri döndürür.

Örnekler

Bu bölüm, bu sorgu dili yapısının nasıl kullanılacağına örnekler içerir.

Statik dize değerlerini seçme

Bu örnekte iki statik dize değeridir ve her iki değeri de içeren tek bir nesneye sahip bir dizi döndürür. Değerler adlandırılmadığından, eşdeğer json alanını adlandırmak için sıralı bir sayı kullanılır.

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

Proje alanları

Bu örnekte JSON projeksiyonu, sonuçta elde edilen JSON nesnesi için tam yapı ve alan adlarında ince ayar yapmak için kullanılır. Burada ve modeladlı identifier alanlarla bir JSON nesnesi oluşturulur. Dış JSON nesnesi hala adlandırılmamış olduğundan, bu alanı adlandırmak için oluşturulan bir sayı ($1) kullanılır.

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

Proje statik dizesi

Bu örnekte VALUE anahtar sözcüğü statik bir dizeyle birlikte kullanılarak sonuç olarak dize dizisi oluşturulur.

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

Karmaşık projeksiyon

Bu örnekte sorgu, istemcinin ayrıştırmak için JSON SELECT nesnesine dönüştürülen sonuçları içeren ortak bir sorgu gerçekleştirmek üzere bir yan tümcesi VALUE , anahtar sözcüğü, yan FROM tümcesi ve JSON projeksiyonunun birleşimini kullanır.

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

Açıklamalar

  • Söz SELECT * dizimi yalnızca yan tümcesi tam olarak bir diğer ad bildirmişse FROM geçerlidir. SELECT * bir kimlik projeksiyonu sağlar. Bu projeksiyon gerekli değilse yararlı olabilir. SELECT * yalnızca yan tümcesi belirtilirse ve yalnızca tek bir giriş kaynağı sunulursa FROM geçerlidir.
  • Hem hem SELECT * de SELECT <select_list> söz dizimsel şekerdir ve basit SELECT ifadeler kullanılarak ifade edilebilir.
  • ifadesi SELECT * FROM ... AS from_alias ... ile SELECT from_alias FROM ... AS from_alias ...eşdeğerdir.
  • ifadesi SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] ile SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...]eşdeğerdir.