適用于 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%" |
[ ] |
指定範圍內的任何單一字元 () [a-f] 或設定 ([abcdef] ) 。 |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
不在指定範圍內的任何單一字元 ([^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