Поделиться через


Ключевые слова в Azure Cosmos DB для NoSQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Язык запросов Azure Cosmos DB для NoSQL включает набор зарезервированных ключевых слов, используемых в запросах для расширенных функциональных возможностей.

BETWEEN

Ключевое BETWEEN слово вычисляет логическое значение, указывающее, находится ли целевое значение между двумя указанными значениями включительно.

Ключевое BETWEEN слово можно использовать с WHERE предложением для выражения запросов, которые фильтруют результаты по диапазонам строковых или числовых значений. Например, следующий запрос возвращает все элементы, в которых цена находится между 17.25 и снова включительно 25.50.

SELECT VALUE
    p.price
FROM
    products p
WHERE
    p.price BETWEEN 17.25 AND 25.50
[
  20
]

Можно также использовать ключевое слово BETWEEN в предложении SELECT, как показано в следующем примере.

SELECT 
    (p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
    p.price
FROM
    products p
[
  {
    "booleanLessThanTen": false,
    "price": 20.0
  },
  {
    "booleanLessThanTen": true,
    "price": 7.5
  }
]

Примечание.

В API noSQL, в отличие от 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

Возвращает логическое значение в зависимости от того, соответствует ли определенная строка символов указанному шаблону. Шаблон может включать обычные символы и символы-шаблоны.

Совет

Вы можете создавать логически эквивалентные запросы с помощью ключевого LIKE слова или системной RegexMatch функции. Вы увидите одно и то же использование индекса независимо от выбранного варианта. Выбор варианта использования в значительной степени основан на предпочтениях синтаксиса.

Примечание.

Поскольку LIKE может использовать индекс, необходимо создать индекс диапазона для свойств, сравниваемых с помощью LIKE.

С LIKE можно использовать следующие подстановочные знаки:

Description Пример
% Любая строка, содержащая ноль или более символов. 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%, не хотите интерпретировать % его как подстановочный знак. В этом примере интерпретируется ^ как escape-символ, чтобы можно было избежать определенного экземпляра %.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.description LIKE "%20^%%" ESCAPE "^"

Подстановочные символы можно заключать в квадратные скобки, чтобы они рассматривались как литеральные символы. При заключении подстановочного символа в скобки удаляются все специальные атрибуты. Эта таблица содержит примеры литеральных символов.

Проанализированное значение
LIKE "20-30[%]" 20-30%
LIKE "[_]n" _n
LIKE "[ [ ]" [
LIKE "]" ]

В

Используйте ключевое IN слово, чтобы проверить, соответствует ли указанное значение любому значению в списке. Например, следующий запрос возвращает все элементы, в которых категория соответствует по крайней мере одному из значений в списке.

SELECT
    *
FROM
    products p
WHERE
    p.category IN ("Accessories", "Clothing")

Совет

Если включить ключ секции в фильтр IN, запрос будет автоматически фильтровать только соответствующие секции.

TOP

Ключевое TOP слово возвращает первое N число запросов в неопределенном порядке. Рекомендуется использовать TOP предложение с ORDER BY предложением, чтобы ограничить результаты первым N числом упорядоченных значений. Объединение этих двух предложений — единственный способ прогнозировать, какие строки TOP влияют.

Можно использовать TOP с константным значением, как показано в следующем примере или с переменным значением с помощью параметризованных запросов.

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