共用方式為


SELECT - Cosmos DB 中的查詢語言 (在 Azure 和 Fabric 中)

子句會 SELECT 識別要在查詢結果中傳回的欄位。 然後,子句會將這些欄位投影到 JSON 結果集中。

每個查詢都包含子 SELECT 句和選擇性 FROMWHERE 子句,根據 ANSI SQL 標準。 一般而言,子句中的 FROM 來源會列舉,而子 WHERE 句會在來源上套用篩選條件,以擷取 JSON 專案的子集。

語法

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 要為結果集選取的內容或值。
* 指定應該擷取值而不進行任何變更。 具體而言,如果處理的值是物件,則會擷取所有屬性。
object_property_list 指定要擷取的內容清單。 每個傳回值都是具有指定屬性的物件。
VALUE 指定應擷取 JSON 值,而不是完整的 JSON 物件。 與property_list>不同<,此引數不會將投影值包裝在物件中。
DISTINCT 指定應移除投影性質的重複項。
scalar_expression 表示式,代表要計算的值。

傳回類型

傳回指定的投影欄位或值。

範例

本節包含如何使用此查詢語言建構的範例。

選取靜態字串值

在此範例中,兩個靜態字串值,並傳回一個陣列,其中包含包含這兩個值的單一物件。 由於值未命名,因此會使用循序產生的數字來命名對等的 json 欄位。

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

專案欄位

在此範例中,JSON 投影用於微調產生的 JSON 物件的確切結構和欄位名稱。 在這裡,會建立一個名為 和 modelidentifier欄位的 JSON 物件。 外部 JSON 物件仍未命名,因此會使用產生的數字 ($1) 來命名此欄位。

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

專案靜態字串

在此範例中,VALUE 關鍵字會與靜態字串搭配使用,以建立字串陣列作為結果。

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

複式投影

在此範例中,查詢會使用子句、VALUE關鍵字、FROM子句和 JSON 投影的SELECT組合來執行一般查詢,並將結果轉換為 JSON 物件供用戶端剖析。

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

備註

  • SELECT *只有在子句只宣告一個別名時FROM,語法才有效。 SELECT * 提供身分投影,如果不需要投影,則會很有用。 SELECT * 只有在指定子句並僅引入單一輸入來源時才 FROM 有效。
  • 兩者SELECT *都是SELECT <select_list>句法糖,可以用簡單的SELECT語句來表達。
  • 運算式 SELECT * FROM ... AS from_alias ... 相當於 SELECT from_alias FROM ... AS from_alias ...
  • 運算式 SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] 相當於 SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...]