Palavras-chave no Azure Cosmos DB para NoSQL
APLICA-SE A: NoSQL
A linguagem de consulta do Azure Cosmos DB para NoSQL inclui um conjunto de palavras-chave reservadas que são utilizadas em consultas para funcionalidades expandidas.
BETWEEN
A BETWEEN
palavra-chave é avaliada como um valor booleano que indica se o valor de destino está entre dois valores especificados, inclusive.
Pode utilizar a BETWEEN
palavra-chave com uma WHERE
cláusula para expressar consultas que filtram resultados em intervalos de cadeia ou valores numéricos. Por exemplo, a consulta seguinte devolve todos os itens em que o preço é 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
]
Também pode utilizar a BETWEEN
palavra-chave na SELECT
cláusula, como no exemplo seguinte.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Nota
Na API para NoSQL, ao contrário do ANSI SQL, 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 como fifteenDollars
noutros. Nestes casos, tal como no JavaScript, a comparação entre os dois tipos diferentes resulta em undefined
, pelo que o item é ignorado.
DISTINCT
A DISTINCT
palavra-chave elimina duplicados nos resultados da consulta projetada.
Neste exemplo, a consulta projeta valores para cada categoria de produto. Se duas categorias forem equivalentes, apenas uma única ocorrência devolve nos resultados.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
Também pode projetar valores mesmo que o campo de destino não exista. Neste caso, o campo não existe num dos itens, pelo que a consulta devolve 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
Devolve um valor booleano consoante uma cadeia de carateres específica corresponda a um padrão especificado. Um padrão pode incluir carateres universais e carateres universais normais.
Dica
Pode escrever consultas logicamente equivalentes com a LIKE
palavra-chave ou a função do RegexMatch
sistema. Irá observar a mesma utilização do índice, independentemente da opção que escolher. A escolha da opção a utilizar baseia-se, em grande parte, na preferência de sintaxe.
Nota
Uma LIKE
vez que pode utilizar um índice, deve criar um índice de intervalo para as propriedades que está a comparar com LIKE
.
Pode utilizar os seguintes carateres universais com LIKE:
Descrição | Exemplo | |
---|---|---|
% |
Qualquer cadeia de carateres de zero ou mais carateres. | WHERE c.description LIKE "%SO%PS%" |
_ (caráter de sublinhado) |
Qualquer caráter individual. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Qualquer caráter único dentro do intervalo especificado ([a-f] ) ou conjunto ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Qualquer caráter individual não dentro do intervalo especificado ([^a-f] ) ou definido ([^abcdef] ). |
WHERE c.description LIKE "%SO[^abc]PS%" |
O %
caráter corresponde a qualquer cadeia de zero ou mais carateres. Por exemplo, ao colocar um %
no início e no fim do padrão, a consulta seguinte devolve todos os itens em que o campo especificado contém a expressão como subcadeia:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Se utilizasse apenas um %
caráter no final do padrão, só devolveria 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 caráter universal no início do padrão indica que pretende corresponder valores com o valor especificado como prefixo:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
A NOT
palavra-chave inversa o resultado da LIKE
avaliação da expressão da palavra-chave. Este exemplo devolve todos os itens que não correspondem à LIKE
expressão.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
Pode procurar padrões que incluam um ou mais carateres universais com a ESCAPE
cláusula . Por exemplo, se quisesse procurar descrições que contivessem a cadeia de carateres 20%
, não iria querer interpretar o %
como um caráter universal. Este exemplo interpreta o como o ^
caráter de escape para que possa escapar a uma instância específica de %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
Pode incluir carateres universais entre parênteses para tratá-los como carateres literais. Quando coloca um caráter universal entre parênteses retos, remove quaisquer atributos especiais. Esta tabela inclui exemplos de carateres literais.
Valor analisado | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Utilize a IN
palavra-chave para verificar se um valor especificado corresponde a qualquer valor numa lista. Por exemplo, a consulta seguinte devolve todos os itens em que a categoria corresponde a, pelo menos, um dos valores numa lista.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Dica
Se incluir a chave de partição no filtro, a IN
consulta filtrará automaticamente apenas as partições relevantes.
SUPERIOR
A TOP
palavra-chave devolve o primeiro N
número de resultados da consulta numa ordem indefinida. Como melhor prática, utilize TOP
com a cláusula para limitar os ORDER BY
resultados ao primeiro N
número de valores ordenados. Combinar estas duas cláusulas é a única forma de indicar previsivelmente quais as linhas TOP
que afetam.
Pode utilizar TOP
com um valor constante, como no exemplo seguinte, ou com um valor variável através de consultas parametrizadas.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC