Trefwoorden in Azure Cosmos DB voor NoSQL
VAN TOEPASSING OP: NoSQL
De querytaal van Azure Cosmos DB for NoSQL bevat een set gereserveerde trefwoorden die worden gebruikt in query's voor uitgebreide functionaliteit.
BETWEEN
Het BETWEEN
trefwoord evalueert naar een Booleaanse waarde die aangeeft of de doelwaarde tussen twee opgegeven waarden ligt, inclusief.
U kunt het BETWEEN
trefwoord met een WHERE
component gebruiken om query's uit te drukken waarmee resultaten worden gefilterd op bereiken van tekenreeksen of numerieke waarden. De volgende query retourneert bijvoorbeeld alle items waarin de prijs zich bevindt tussen 17.25
en 25.50
, opnieuw inclusief.
SELECT VALUE
p.price
FROM
products p
WHERE
p.price BETWEEN 17.25 AND 25.50
[
20
]
U kunt ook het BETWEEN
trefwoord in de SELECT
component gebruiken, zoals in het volgende voorbeeld.
SELECT
(p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
p.price
FROM
products p
[
{
"booleanLessThanTen": false,
"price": 20.0
},
{
"booleanLessThanTen": true,
"price": 7.5
}
]
Notitie
In de API voor NoSQL kunt u, in tegenstelling tot ANSI SQL, bereikquery's uitdrukken op eigenschappen van gemengde typen. Dit kan bijvoorbeeld price
een getal zijn, zoals 5.0
in sommige items en een tekenreeks zoals fifteenDollars
in andere. In deze gevallen, zoals in JavaScript, resulteert de vergelijking tussen de twee verschillende typen in undefined
, zodat het item wordt overgeslagen.
DUIDELIJK
Het DISTINCT
trefwoord elimineert duplicaten in de verwachte queryresultaten.
In dit voorbeeld worden de waarden van de queryprojecten voor elke productcategorie uitgevoerd. Als twee categorieën gelijkwaardig zijn, wordt slechts één exemplaar geretourneerd in de resultaten.
SELECT DISTINCT VALUE
p.category
FROM
products p
[
"Accessories",
"Tools"
]
U kunt ook waarden projecten, zelfs als het doelveld niet bestaat. In dit geval bestaat het veld niet in een van de items, dus retourneert de query een leeg object voor die specifieke unieke waarde.
SELECT DISTINCT
p.category
FROM
products p
U ziet deze uitvoer:
[
{},
{
"category": "Accessories"
},
{
"category": "Tools"
}
]
ALS
Retourneert een Booleaanse waarde, afhankelijk van of een specifieke tekenreeks overeenkomt met een opgegeven patroon. Een patroon kan reguliere tekens en jokertekens bevatten.
Tip
U kunt logisch equivalente query's schrijven met behulp van het LIKE
trefwoord of de RegexMatch
systeemfunctie. U ziet hetzelfde indexgebruik, ongeacht welke optie u kiest. De keuze van welke optie u wilt gebruiken, is grotendeels gebaseerd op syntaxisvoorkeur.
Notitie
Omdat LIKE
u een index kunt gebruiken, moet u een bereikindex maken voor eigenschappen die u vergelijkt.LIKE
U kunt de volgende jokertekens gebruiken met LIKE:
Beschrijving | Voorbeeld | |
---|---|---|
% |
Een tekenreeks van nul of meer tekens. | WHERE c.description LIKE "%SO%PS%" |
_ (onderstrepingsteken) |
Elk willekeurig teken. | WHERE c.description LIKE"%SO_PS%" |
[ ] |
Eén teken binnen het opgegeven bereik ([a-f] ) of set ([abcdef] ). |
WHERE c.description LIKE "%SO[t-z]PS%" |
[^] |
Eén teken dat zich niet binnen het opgegeven bereik () of set ([^a-f] [^abcdef] ) bevindt. |
WHERE c.description LIKE "%SO[^abc]PS%" |
Het %
teken komt overeen met een tekenreeks van nul of meer tekens. Door bijvoorbeeld een %
aan het begin en einde van het patroon te plaatsen, retourneert de volgende query alle items waarin het opgegeven veld de woordgroep als subtekenreeks bevat:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%driver%"
Als u alleen een %
teken aan het einde van het patroon hebt gebruikt, zou u alleen items retourneren met een beschrijving die begon met fruit
:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "%glove"
Op dezelfde manier geeft het jokerteken aan het begin van het patroon aan dat u waarden wilt vergelijken met de opgegeven waarde als voorvoegsel:
SELECT VALUE
p.name
FROM
products p
WHERE
p.name LIKE "Road%"
Het NOT
trefwoord inverses het resultaat van de expressie-evaluatie van het LIKE
trefwoord. In dit voorbeeld worden alle items geretourneerd die niet overeenkomen met de LIKE
expressie.
SELECT VALUE
p.name
FROM
products p
WHERE
p.name NOT LIKE "%winter%"
U kunt zoeken naar patronen die een of meer jokertekens bevatten met behulp van de ESCAPE
component. Als u bijvoorbeeld wilt zoeken naar beschrijvingen die de tekenreeks 20%
bevatten, wilt u het %
niet interpreteren als jokerteken. In dit voorbeeld wordt het ^
als escape-teken geïnterpreteerd, zodat u een specifiek exemplaar van %
.
SELECT VALUE
p.name
FROM
products p
WHERE
p.description LIKE "%20^%%" ESCAPE "^"
U kunt jokertekens tussen haakjes zetten om ze als letterlijke tekens te behandelen. Wanneer u een jokerteken tussen haakjes plaatst, verwijdert u speciale kenmerken. Deze tabel bevat voorbeelden van letterlijke tekens.
Geparseerde waarde | |
---|---|
LIKE "20-30[%]" |
20-30% |
LIKE "[_]n" |
_n |
LIKE "[ [ ]" |
[ |
LIKE "]" |
] |
IN
Gebruik het IN
trefwoord om te controleren of een opgegeven waarde overeenkomt met een waarde in een lijst. Met de volgende query worden bijvoorbeeld alle items geretourneerd waarbij de categorie overeenkomt met ten minste één van de waarden in een lijst.
SELECT
*
FROM
products p
WHERE
p.category IN ("Accessories", "Clothing")
Tip
Als u de partitiesleutel in het IN
filter opneemt, wordt uw query automatisch gefilterd op alleen de relevante partities.
TOP
Het TOP
trefwoord retourneert het eerste N
aantal queryresultaten in een niet-gedefinieerde volgorde. Gebruik dit best practice TOP
met de ORDER BY
component om de resultaten te beperken tot het eerste N
aantal geordende waarden. Het combineren van deze twee componenten is de enige manier om voorspelbaar aan te geven welke rijen TOP
van invloed zijn.
U kunt TOP
met een constante waarde, zoals in het volgende voorbeeld, of met een variabelewaarde met behulp van geparameteriseerde query's.
SELECT TOP 10
*
FROM
products p
ORDER BY
p.price ASC