Ключевые слова в 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 можно использовать следующие подстановочные знаки:
Описание | Пример | |
---|---|---|
% |
Любая строка, содержащая ноль или более символов. | 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
IN
Используйте ключевое слово, чтобы проверка, совпадает ли указанное значение с каким-либо значением в списке. Например, следующий запрос возвращает все элементы, в которых категория соответствует хотя бы одному из значений в списке.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Совет
Если включить ключ секции в фильтр IN
, запрос будет автоматически фильтровать только соответствующие секции.
В начало
Ключевое слово TOP
возвращает первое N
число результатов запроса в неопределенном порядке. Рекомендуется использовать TOP
с предложением ORDER BY
, чтобы ограничить результаты первым N
числом упорядоченных значений. Объединение этих двух предложений — единственный способ прогнозировать влияние строк TOP
.
Можно использовать TOP
с константным значением, как показано в следующем примере, или с переменным значением с помощью параметризованных запросов.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC