Compartilhar via


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