Słowa kluczowe w usłudze Azure Cosmos DB for NoSQL
DOTYCZY: NoSQL
Język zapytań usługi Azure Cosmos DB for NoSQL zawiera zestaw zarezerwowanych słów kluczowych używanych w zapytaniach dotyczących rozszerzonej funkcjonalności.
BETWEEN
Słowo BETWEEN
kluczowe oblicza wartość logiczną wskazującą, czy wartość docelowa znajduje się między dwiema określonymi wartościami, włącznie.
Możesz użyć słowa kluczowego BETWEEN
z klauzulą , WHERE
aby wyrazić zapytania, które filtruje wyniki względem zakresów ciągów lub wartości liczbowych. Na przykład następujące zapytanie zwraca wszystkie elementy, w których cena znajduje się między 17.25
i 25.50
, ponownie włącznie.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
Możesz również użyć BETWEEN
słowa kluczowego w klauzuli SELECT
, jak w poniższym przykładzie.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Uwaga
W interfejsie API for NoSQL, w przeciwieństwie do języka ANSI SQL, można wyrażać zapytania zakresu względem właściwości typów mieszanych. Na przykład może to być liczba 5.0
podobna price
do w niektórych elementach i ciąg, jak fifteenDollars
w innych. W takich przypadkach, podobnie jak w języku JavaScript, porównanie między dwoma różnymi typami powoduje undefined
, więc element jest pomijany.
ODMIENNY
Słowo DISTINCT
kluczowe eliminuje duplikaty w przewidywanych wynikach zapytania.
W tym przykładzie zapytania wartości projektów dla każdej kategorii produktów. Jeśli dwie kategorie są równoważne, w wynikach zwracane jest tylko jedno wystąpienie.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
Można również projektować wartości, nawet jeśli pole docelowe nie istnieje. W takim przypadku pole nie istnieje w jednym z elementów, więc zapytanie zwraca pusty obiekt dla tej konkretnej unikatowej wartości.
SELECT DISTINCT
p.category
FROM
products p
Wyniki są następujące:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
LIKE
Zwraca wartość logiczną w zależności od tego, czy określony ciąg znaków pasuje do określonego wzorca. Wzorzec może zawierać zwykłe znaki i symbole wieloznaczne.
Napiwek
Zapytania równoważne logicznie można pisać przy użyciu słowa kluczowego LIKE
lub funkcji systemowej RegexMatch
. Będziesz obserwować to samo wykorzystanie indeksu niezależnie od wybranej opcji. Wybór opcji do użycia jest w dużej mierze oparty na preferencjach składniowych.
Uwaga
Ponieważ LIKE
można użyć indeksu, należy utworzyć indeks zakresu dla właściwości, które porównujesz przy użyciu polecenia LIKE
.
Możesz użyć następujących symboli wieloznacznych z like:
opis | Przykład | |
---|---|---|
% |
Dowolny ciąg z zero lub więcej znaków. | WHERE c.description LIKE "%SO%PS%" |
_ (podkreślenie) |
Dowolny pojedynczy znak. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Dowolny pojedynczy znak w określonym zakresie ([a-f] ) lub zestawie ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Każdy pojedynczy znak nie mieści się w określonym zakresie ([^a-f] ) ani w zestawie ([^abcdef] ). |
WHERE c.description LIKE "%SO[^abc]PS%" |
Znak %
pasuje do dowolnego ciągu zero lub więcej znaków. Na przykład przez umieszczenie elementu %
na początku i na końcu wzorca następujące zapytanie zwraca wszystkie elementy, w których określone pole zawiera frazę jako podciąg:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Jeśli używasz %
tylko znaku na końcu wzorca, zwracasz tylko elementy z opisem rozpoczynającym się od fruit
:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
Podobnie symbol wieloznaczny na początku wzorca wskazuje, że chcesz dopasować wartości z określoną wartością jako prefiks:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
Słowo NOT
kluczowe powoduje odwrotność wyniku oceny wyrażenia słowa kluczowego LIKE
. Ten przykład zwraca wszystkie elementy, które nie są zgodne z wyrażeniemLIKE
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
Możesz wyszukać wzorce, które zawierają co najmniej jeden symbol wieloznaczny, używając klauzuli ESCAPE
. Jeśli na przykład chcesz wyszukać opisy zawierające ciąg 20%
, nie chcesz interpretować symbolu %
wieloznakowego. W tym przykładzie jest interpretowany ^
jako znak ucieczki, dzięki czemu można uciec od określonego wystąpienia klasy %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
Symbole wieloznaczne można ująć w nawiasy, aby traktować je jako znaki literału. Po ujęciu symbolu wieloznakowego w nawiasach należy usunąć wszystkie atrybuty specjalne. Ta tabela zawiera przykłady znaków literału.
Przeanalizowana wartość | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Użyj słowa kluczowego IN
, aby sprawdzić, czy określona wartość jest zgodna z dowolną wartością na liście. Na przykład następujące zapytanie zwraca wszystkie elementy, w których kategoria jest zgodna z co najmniej jedną z wartości na liście.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Napiwek
Jeśli uwzględnisz klucz partycji w filtrze IN
, zapytanie będzie automatycznie filtrować tylko do odpowiednich partycji.
TOP
Słowo TOP
kluczowe zwraca pierwszą N
liczbę wyników zapytania w niezdefiniowanej kolejności. Najlepszym rozwiązaniem jest użycie TOP
klauzuli z klauzulą ORDER BY
, aby ograniczyć wyniki do pierwszej N
liczby uporządkowanych wartości. Połączenie tych dwóch klauzul jest jedynym sposobem przewidywania, który ma wpływ na wiersze TOP
.
Można użyć TOP
z wartością stałą, jak w poniższym przykładzie, lub z wartością zmiennej przy użyciu zapytań sparametryzowanych.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC