適用於 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