Palavras-chave no Azure Cosmos DB for NoSQL
APLICA-SE A: NoSQL
A linguagem de consulta do Azure Cosmos DB for NoSQL inclui um conjunto de palavras-chave reservadas usadas nas consultas da funcionalidade estendida.
BETWEEN
A BETWEEN
palavra-chave é avaliada como um booliano que indica se o valor de destino está entre dois valores especificados, inclusive.
Você pode usar a BETWEEN
palavra-chave com uma WHERE
cláusula para expressar consultas que filtram os resultados nos intervalos de cadeia de caracteres ou valores numéricos. Por exemplo, a consulta a seguir retorna todos os itens em que o preço está entre 17.25
e 25.50
, novamente, inclusive.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
Você também pode usar a palavra-chave BETWEEN
na cláusula SELECT
, como no exemplo a seguir.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Observação
Na API para NoSQL, ao contrário do ANSI SQL, você pode expressar consultas de intervalo em relação a propriedades de tipos mistos. Por exemplo, price
pode ser um número como 5.0
em alguns itens e uma cadeia de caracteres como fifteenDollars
em outros. Nesses casos, como no JavaScript, a comparação entre os dois tipos diferentes resulta em undefined
, portanto, o item é ignorado.
DISTINTO
A DISTINCT
palavra-chave elimina duplicatas na projeção dos resultados da consulta.
Neste exemplo, a consulta projeta valores para cada sobrenome: Se duas categorias forem equivalentes, apenas uma única ocorrência retornará nos resultados.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
Você também pode projetar valores mesmo que o campo de destino não exista. Nesse caso, o campo não existe em um dos itens, portanto, a consulta retorna um objeto vazio para esse valor exclusivo específico.
SELECT DISTINCT
p.category
FROM
products p
Os resultados são:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
LIKE
Retorna um valor booliano dependendo se uma cadeia de caracteres específica corresponde a um padrão especificado. Um padrão pode incluir caracteres normais e curingas.
Dica
Você pode escrever consultas logicamente equivalentes usando a palavra-chave LIKE
ou a função de sistema RegexMatch
. Você observará o mesmo uso de índice, independentemente de qual deles você escolher. A escolha de qual opção usar é amplamente baseada na preferência de sintaxe.
Observação
Como o LIKE
pode utilizar um índice, você deve criar um índice de intervalo para as propriedades que você está comparando usando LIKE
.
Você pode usar os seguintes caracteres curinga com LIKE:
Descrição | Exemplo | |
---|---|---|
% |
Qualquer cadeia de zero ou mais caracteres. | WHERE c.description LIKE "%SO%PS%" |
_ (sublinhado) |
Qualquer caractere único. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Qualquer caractere único no intervalo ([a-f] ) ou conjunto ([abcdef] ) especificado. |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Qualquer caractere único que não esteja no intervalo ([^a-f] ) ou conjunto ([^abcdef] ) especificado. |
WHERE c.description LIKE "%SO[^abc]PS%" |
O caractere %
corresponde a qualquer cadeia de zero ou mais caracteres. Por exemplo, colocando um %
no início e no final do padrão, a consulta a seguir retorna todos os itens em que o campo especificado contiver a frase como uma sub-rede de caracteres:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Se você usasse apenas um %
caractere no final do padrão, retornaria apenas itens com uma descrição que começasse com: fruit
:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
Da mesma forma, o curinga no início do padrão indica que você quer corresponder valores com o valor especificado como um prefixo:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
A NOT
palavra-chave reverte o resultado da LIKE
avaliação da expressão da palavra-chave. Este exemplo retorna todos os itens que não correspondem à LIKE
expressão.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
Você pode pesquisar por padrões que incluam um ou mais caracteres curinga usando a ESCAPE
cláusula. Por exemplo, se você quisesse pesquisar descrições que contivessem a cadeia de caracteres 20%
, você não iria querer interpretar o %
como um caractere curinga. Este exemplo interpreta o ^
como o caractere de escape para que você possa escapar de uma instância específica do %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
Você pode colocar caracteres curinga entre colchetes para tratá-los como caracteres literais. Ao colocar um caractere curinga entre colchetes, você remove todos os atributos especiais. Esta tabela inclui exemplos de caracteres literais.
Valor analisado | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Use a palavra-chave IN
para verificar se um valor especificado corresponde a um dos valores em uma lista. Por exemplo, a consulta a seguir retorna todos os itens em que a categoria corresponde a pelo menos um dos valores em uma lista.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Dica
Se você incluir sua chave de partição no filtro IN
, sua consulta filtrará automaticamente somente as partições relevantes.
INÍCIO
A palavra-chave TOP
retorna o primeiro N
número de resultados da consulta em uma ordem indefinida. Como prática recomendada, use TOP
com a ORDER BY
cláusula para limitar os resultados aos primeiros N
números de valores ordenados. Combinar essas duas cláusulas é a única maneira de indicar de modo previsível quais linhas o TOP
afeta.
Você pode usar TOP
com um valor constante, como no exemplo a seguir, ou com um valor variável usando consultas parametrizadas.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC