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 do 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 jest 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 podobna price5.0 do w niektórych elementach i ciąg, taki jak fifteenDollars w innych. W takich przypadkach, podobnie jak w języku JavaScript, porównanie między dwoma różnymi typami powoduje, że element undefinedzostanie pominięty.

DISTINCT

Słowo DISTINCT kluczowe eliminuje duplikaty w przewidywanych wynikach zapytania.

W tym przykładzie wartości projektów zapytań 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żesz również projektować wartości, nawet jeśli pole docelowe nie istnieje. W takim przypadku pole nie istnieje w jednym z elementów, dlatego 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.

Porada

Zapytania równoważne można logicznie napisać 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 symbolami LIKE:

Opis Przykład
% Dowolny ciąg z zera 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%"
[^] Dowolny pojedynczy znak nie mieści się w określonym zakresie ([^a-f]) lub zestawie ([^abcdef]). WHERE c.description LIKE "%SO[^abc]PS%"

Znak % pasuje do dowolnego ciągu zera lub większej liczby znaków. Na przykład, umieszczając element % 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 na końcu wzorca użyto % tylko znaku, 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żeniem LIKE .

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ć elementu % jako symbol wieloznaczny. W tym przykładzie jest interpretowany ^ znak ucieczki, aby można było uciec od określonego wystąpienia elementu %.

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")

Porada

Jeśli klucz partycji zostanie uwzględniny w filtrze IN , zapytanie będzie automatycznie filtrować tylko odpowiednie partycje.

TOP

Słowo TOP kluczowe zwraca pierwszą N liczbę wyników zapytania w niezdefiniowanej kolejności. Najlepszym rozwiązaniem jest użycie TOP klauzuli ORDER BY z klauzulą w celu ograniczenia wyników 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łą, tak jak w poniższym przykładzie, lub z wartością zmiennej przy użyciu sparametryzowanych zapytań.

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