共用方式為


適用於 NoSQL 的 Azure Cosmos DB 關鍵詞

適用於:NoSQL

適用於 NoSQL 的 Azure Cosmos DB 查詢語言包含一組保留關鍵詞,用於擴充功能的查詢。

BETWEEN

BETWEEN關鍵詞會評估為布爾值,指出目標值是否介於兩個指定的值之間,內含。

您可以使用 BETWEEN 關鍵詞搭配 WHERE 子句來表示查詢,以根據字串或數值範圍篩選結果。 例如,下列查詢會傳回價格介於和25.50之間的17.25所有專案,並再次包含 。

SELECT VALUE
    p.price
FROM
    products p
WHERE
    p.price BETWEEN 17.25 AND 25.50
[
  20
]

您也可以在 SELECT 子句中使用 BETWEEN 關鍵字,如下列範例所示。

SELECT 
    (p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
    p.price
FROM
    products p
[
  {
    "booleanLessThanTen": false,
    "price": 20.0
  },
  {
    "booleanLessThanTen": true,
    "price": 7.5
  }
]

注意

在 NoSQL 的 API 中,不同於 ANSI SQL,您可以針對混合類型的屬性表達範圍查詢。 例如,price 在某些項目中可能是 5.0 之類的數字,在其他項目中則可能是 fifteenDollars 之類的字串。 在這些情況下,如同在 JavaScript 中一樣,這兩種不同類型的比較會產生 undefined,因此會略過專案。

DISTINCT

關鍵詞 DISTINCT 會排除投影查詢結果中的重複專案。

在此範例中,查詢會投影每個產品類別的值。 如果兩個類別相等,則結果中只會傳回單一出現次數。

SELECT DISTINCT VALUE
    p.category
FROM
    products p
[
  "Accessories",
  "Tools"
]

即使目標欄位不存在,您也可以投影值。 在此情況下,欄位不存在於其中一個專案中,因此查詢會傳回該特定唯一值的空白物件。

SELECT DISTINCT
    p.category
FROM
    products p

結果為:

[
  {},
  {
    "category": "Accessories"
  },
  {
    "category": "Tools"
  }
]

LIKE

根據特定字元字串是否符合指定的模式,傳回布爾值。 模式中可以包含一般字元及萬用字元。

提示

您可以使用 關鍵詞或RegexMatch系統函式,以邏輯方式撰寫對等查詢LIKE。 不論您選擇的選項為何,您都會觀察相同的索引使用率。 要使用哪一個選項的選擇主要是根據語法喜好設定。

注意

因為 LIKE 可以利用索引,所以請使用 LIKE 來為要比較的屬性建立範圍索引

您可以搭配 LIKE 來使用下列萬用字元:

描述 範例
% 任何含有零或多個字元的字串。 WHERE c.description LIKE "%SO%PS%"
_(底線) 任何單一字元。 WHERE c.description LIKE"%SO_PS%"
[ ] 指定範圍 () 或 set ([a-f][abcdef]) 內的任何單一字元。 WHERE c.description LIKE "%SO[t-z]PS%"
[^] 不在指定範圍 () 或 set ([^a-f]) 內的任何單一字元。[^abcdef] WHERE c.description LIKE "%SO[^abc]PS%"

% 字元會比對任何有零個或多個字元的字串。 例如,藉由將 放在 % 模式的開頭和結尾,下列查詢會傳回指定字段包含片語做為子字串的所有專案:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%driver%"

如果您只在模式結尾使用 % 字元,則只會傳回以 開頭 fruit描述的專案:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%glove"

同樣地,模式開頭的通配符表示您想要比對值與指定值做為前置詞:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "Road%"

關鍵詞 NOT 會反轉關鍵詞表達式評估的結果 LIKE 。 這個範例會傳回不符合LIKE表達式的所有專案。

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name NOT LIKE "%winter%"

您可以使用 子句來搜尋包含一或多個通配符的 ESCAPE 模式。 例如,如果您想要搜尋包含字串 20%的描述,則不想將 解譯 % 為通配符。 這個範例會將 ^ 解譯為逸出字元,讓您可以逸出 的特定實例 %

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.description LIKE "%20^%%" ESCAPE "^"

您可以用括弧括住萬用字元,以將這些萬用字元視為常值字元。 以括弧括住萬用字元時,請移除所有特殊屬性。 下表包含常值字元的範例。

剖析的值
LIKE "20-30[%]" 20-30%
LIKE "[_]n" _n
LIKE "[ [ ]" [
LIKE "]" ]

IN

IN使用 關鍵詞來檢查指定的值是否符合清單中的任何值。 例如,下列查詢會傳回類別符合清單中至少一個值的所有專案。

SELECT
    *
FROM
    products p
WHERE
    p.category IN ("Accessories", "Clothing")

提示

如果您在 IN 篩選條件中包含分割區索引鍵,則您的查詢會自動篩選至僅限相關的分割區。

頂端

關鍵詞 TOP 會以未定義的順序傳回第一 N 個查詢結果數目。 最佳做法是搭配 ORDER BY 子句使用 TOP ,將結果限製為排序值的第一N個數目。 結合這兩個子句是可預測指出哪些數據列 TOP 影響的唯一方法。

您可以使用 TOP 常數值,如下列範例所示,或使用參數化查詢搭配變數值。

SELECT TOP 10
    *
FROM
    products p
ORDER BY
    p.price ASC