Klíčová slova ve službě Azure Cosmos DB for NoSQL
PLATÍ PRO: NoSQL
Dotazovací jazyk služby Azure Cosmos DB for NoSQL obsahuje sadu rezervovaných klíčových slov, která se používají v dotazech pro rozšířené funkce.
BETWEEN
Klíčové BETWEEN
slovo se vyhodnotí jako logická hodnota označující, jestli je cílová hodnota mezi dvěma zadanými hodnotami včetně.
Klíčové slovo s WHERE
klauzulí můžete použít BETWEEN
k vyjádření dotazů, které filtrují výsledky s rozsahy řetězců nebo číselných hodnot. Například následující dotaz vrátí všechny položky, ve kterých je cena mezi 17.25
a 25.50
znovu včetně.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
Můžete také použít BETWEEN
klíčové slovo v SELECT
klauzuli, jako v následujícím příkladu.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Poznámka:
V rozhraní API pro NoSQL můžete na rozdíl od ANSI SQL vyjádřit dotazy rozsahu na vlastnosti smíšených typů. Může to být například price
číslo jako 5.0
v některých položkách a řetězec jako fifteenDollars
v jiných. V těchto případech, protože je v JavaScriptu, porovnání mezi dvěma různými typy má za undefined
následek , takže položka se přeskočí.
ZŘETELNÝ
Klíčové DISTINCT
slovo eliminuje duplicity ve výsledcích předpokládaného dotazu.
V tomto příkladu se dotazují na hodnoty projektů pro každou kategorii produktu. Pokud jsou dvě kategorie ekvivalentní, vrátí se ve výsledcích pouze jeden výskyt.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
Hodnoty projektu můžete projektovat i v případě, že cílové pole neexistuje. V tomto případě pole v některé z položek neexistuje, takže dotaz vrátí prázdný objekt pro danou jedinečnou hodnotu.
SELECT DISTINCT
p.category
FROM
products p
Výsledky jsou následující:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
LIKE
Vrátí logickou hodnotu v závislosti na tom, jestli určitý znakový řetězec odpovídá zadanému vzoru. Vzor může obsahovat běžné znaky a zástupné znaky.
Tip
Logicky ekvivalentní dotazy můžete psát pomocí klíčového LIKE
RegexMatch
slova nebo systémové funkce. Uvidíte stejné využití indexu bez ohledu na to, kterou možnost zvolíte. Volba, kterou možnost použít, je z velké části založena na předvolbě syntaxe.
Poznámka:
Protože LIKE
můžete použít index, měli byste vytvořit index rozsahu pro vlastnosti, které porovnáváte pomocí LIKE
.
Následující zástupné znaky můžete použít pomocí funkce LIKE:
Popis | Příklad | |
---|---|---|
% |
Libovolný řetězec s nulovými nebo více znaky. | WHERE c.description LIKE "%SO%PS%" |
_ (podtržítko) |
Libovolný jeden znak. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Libovolný jeden znak v zadaném rozsahu ([a-f] ) nebo sadě ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Libovolný jeden znak, který není v zadaném rozsahu ([^a-f] ) nebo v sadě ([^abcdef] ). |
WHERE c.description LIKE "%SO[^abc]PS%" |
Znak %
odpovídá libovolnému řetězci s nulovými nebo více znaky. Například umístěním %
na začátek a konec vzoru vrátí následující dotaz všechny položky, ve kterých zadané pole obsahuje frázi jako podřetězeč:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Pokud jste použili %
pouze znak na konci vzoru, vrátili byste pouze položky s popisem fruit
, který začínal na:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
Podobně zástupný znak na začátku vzoru označuje, že chcete shodovat hodnoty se zadanou hodnotou jako předponu:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
Klíčové NOT
slovo inverzní k výsledku vyhodnocení výrazu LIKE
klíčového slova. Tento příklad vrátí všechny položky, které neodpovídají výrazuLIKE
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
Pomocí klauzule můžete vyhledat vzory, které obsahují jeden nebo více zástupných znaků ESCAPE
. Pokud byste například chtěli vyhledat popisy, které obsahoval řetězec 20%
, nebudete chtít interpretovat %
jako zástupný znak. Tento příklad interpretuje ^
jako řídicí znak, takže můžete utéct konkrétní instanci %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
Zástupné znaky můžete uzavřít do závorek, abyste je mohli považovat za literální znaky. Když uzavřete zástupný znak do závorek, odeberete všechny speciální atributy. Tato tabulka obsahuje příklady literálových znaků.
Parsovaná hodnota | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Pomocí klíčového IN
slova zkontrolujte, jestli zadaná hodnota odpovídá libovolné hodnotě v seznamu. Následující dotaz například vrátí všechny položky, ve kterých kategorie odpovídá alespoň jedné z hodnot v seznamu.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Tip
Pokud do filtru zahrnete klíč oddílu IN
, dotaz automaticky vyfiltruje jenom příslušné oddíly.
TOP
Klíčové TOP
slovo vrátí první N
počet výsledků dotazu v nedefinované pořadí. Osvědčeným postupem je použití TOP
ORDER BY
klauzule k omezení výsledků na první N
počet seřazených hodnot. Kombinace těchto dvou klauzulí je jediným způsobem, jak předvídatelně určit, které řádky TOP
ovlivňují.
Můžete použít TOP
s konstantní hodnotou, jako v následujícím příkladu, nebo s proměnnou hodnotou pomocí parametrizovaných dotazů.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC