Udostępnij za pośrednictwem


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 niezgodne 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