Parole chiave in Azure Cosmos DB per NoSQL
SI APPLICA A: NoSQL
Il linguaggio di query di Azure Cosmos DB per NoSQL include un set di parole chiave riservate usate nelle query per le funzionalità estese.
BETWEEN
La BETWEEN
parola chiave restituisce un valore booleano che indica se il valore di destinazione è compreso tra due valori specificati, inclusi.
È possibile usare la BETWEEN
parola chiave con una WHERE
clausola per esprimere query che filtrano i risultati in base a intervalli di valori stringa o numerici. Ad esempio, la query seguente restituisce tutti gli elementi in cui il prezzo è compreso tra 17.25
e 25.50
, di nuovo inclusivo.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
È anche possibile usare la parola chiave BETWEEN
nella clausola SELECT
, come nell'esempio seguente.
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
Nell'API per NoSQL, a differenza di ANSI SQL, è possibile esprimere query di intervallo su proprietà di tipi misti. Ad esempio, price
potrebbe essere un numero come 5.0
in alcuni elementi e una stringa come fifteenDollars
in altri. In questi casi, così com'è in JavaScript, il confronto tra i due tipi diversi restituisce undefined
, quindi l'elemento viene ignorato.
DISTINCT
La DISTINCT
parola chiave elimina i duplicati nei risultati della query proiettati.
In questo esempio i valori dei progetti di query per ogni categoria di prodotto. Se due categorie sono equivalenti, nei risultati viene restituita solo una singola occorrenza.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
È anche possibile proiettare i valori anche se il campo di destinazione non esiste. In questo caso, il campo non esiste in uno degli elementi, quindi la query restituisce un oggetto vuoto per tale valore univoco specifico.
SELECT DISTINCT
p.category
FROM
products p
I risultati sono:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
LIKE
Restituisce un valore booleano a seconda che una stringa di caratteri specifica corrisponda a un criterio specificato. Il modello può contenere caratteri specifici e caratteri jolly.
Suggerimento
È possibile scrivere query equivalenti logicamente usando la LIKE
parola chiave o la funzione di RegexMatch
sistema. Si osserverà lo stesso utilizzo dell'indice indipendentemente dall'opzione scelta. La scelta di quale opzione usare si basa in gran parte sulla preferenza di sintassi.
Nota
Poiché LIKE
può utilizzare un indice, è necessario creare un indice di intervallo per le proprietà che si stanno confrontando tramite LIKE
.
È possibile usare i caratteri jolly seguenti con LIKE:
Descrizione | Esempio | |
---|---|---|
% |
Stringa composta da zero o più caratteri. | WHERE c.description LIKE "%SO%PS%" |
_ (sottolineatura) |
Carattere singolo. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Qualsiasi carattere singolo all'interno dell'intervallo specificato ([a-f] ) o impostato ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Qualsiasi carattere singolo non compreso nell'intervallo specificato ([^a-f] ) o impostato ([^abcdef] ). |
WHERE c.description LIKE "%SO[^abc]PS%" |
Il carattere %
corrisponde a qualsiasi stringa composta da zero o più caratteri. Ad esempio, inserendo un oggetto %
all'inizio e alla fine del criterio, la query seguente restituisce tutti gli elementi in cui il campo specificato contiene la frase come sottostringa:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Se alla fine del criterio è stato usato solo un %
carattere, verranno restituiti solo elementi con una descrizione che ha iniziato con fruit
:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
Analogamente, il carattere jolly all'inizio del criterio indica che si vuole trovare una corrispondenza con i valori con il valore specificato come prefisso:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
La NOT
parola chiave inverte il risultato della valutazione dell'espressione LIKE
della parola chiave. In questo esempio vengono restituiti tutti gli elementi che non corrispondono all'espressione LIKE
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
È possibile cercare modelli che includono uno o più caratteri jolly usando la ESCAPE
clausola . Ad esempio, se si desidera cercare descrizioni contenenti la stringa 20%
, non si vuole interpretare come %
carattere jolly. In questo esempio viene interpretato come carattere di escape in modo da poter eseguire l'escape ^
di un'istanza specifica di %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
È possibile racchiudere i caratteri jolly tra parentesi quadre per considerarli come caratteri letterali. Quando si racchiude un carattere jolly tra parentesi, si rimuovono tutti gli attributi speciali. Questa tabella include esempi di caratteri letterali.
Valore analizzato | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Usare la IN
parola chiave per verificare se un valore specificato corrisponde a qualsiasi valore in un elenco. Ad esempio, la query seguente restituisce tutti gli elementi in cui la categoria corrisponde ad almeno uno dei valori di un elenco.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Suggerimento
Se si include la chiave di partizione nel filtro IN
, la query filtra automaticamente solo le partizioni pertinenti.
TOP
La TOP
parola chiave restituisce il primo N
numero di risultati della query in un ordine non definito. Come procedura consigliata, usare TOP
con la ORDER BY
clausola per limitare i risultati al primo N
numero di valori ordinati. La combinazione di queste due clausole è l'unico modo per indicare in modo prevedibile quali righe TOP
influiscono.
È possibile usare TOP
con un valore costante, come nell'esempio seguente o con un valore di variabile usando query con parametri.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC
Contenuto correlato
- Clausola
WHERE
- Subqueries (Sottoquery)
- Costanti