Delen via


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