Ключевые слова в 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