Share via


Mots clés dans Azure Cosmos DB for NoSQL

S’APPLIQUE À : NoSQL

Le langage de requête d’Azure Cosmos DB for NoSQL inclut un ensemble de mots clés réservés qui sont utilisés dans les requêtes pour les fonctionnalités étendues.

BETWEEN

Le BETWEEN mot clé prend la valeur d’une valeur booléenne indiquant si la valeur cible est comprise entre deux valeurs spécifiées, inclusivement.

Vous pouvez utiliser le mot clé BETWEEN avec une clauseWHERE pour exprimer des requêtes qui filtrent les résultats sur des plages de chaînes ou de valeurs numériques. Par exemple, la requête suivante renvoie tous les articles dont le prix est compris entre 17.25 et 25.50, toujours inclus.

SELECT VALUE
    p.price
FROM
    products p
WHERE
    p.price BETWEEN 17.25 AND 25.50
[
  20
]

Vous pouvez également utiliser le mot clé BETWEEN dans la clause SELECT, comme dans l’exemple suivant.

SELECT 
    (p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
    p.price
FROM
    products p
[
  {
    "booleanLessThanTen": false,
    "price": 20.0
  },
  {
    "booleanLessThanTen": true,
    "price": 7.5
  }
]

Notes

Dans l’API pour NoSQL, contrairement à SQL ANSI, vous pouvez exprimer des requêtes de plage sur des propriétés de types mixtes. Par exemple, price peut être un nombre comme 5.0 dans certains éléments et une chaîne comme fifteenDollars dans d’autres. Dans ces cas-là, comme dans JavaScript, la comparaison entre deux types différents a pour résultat undefined ; l’élément est donc ignoré.

DISTINCT

Le mot clé DISTINCT élimine les doublons dans les résultats de projection de la requête.

Dans cet exemple, la requête projette des valeurs pour chaque catégorie de produit. Si deux catégories sont équivalentes, une seule occurrence retourne dans les résultats.

SELECT DISTINCT VALUE
    p.category
FROM
    products p
[
  "Accessories",
  "Tools"
]

Vous pouvez également projeter des valeurs même si le champ cible n’existe pas. Dans ce cas, le champ n’existe pas dans l’un des éléments. La requête retourne donc un objet vide pour cette valeur unique spécifique.

SELECT DISTINCT
    p.category
FROM
    products p

Les résultats sont :

[
  {},
  {
    "category": "Accessories"
  },
  {
    "category": "Tools"
  }
]

LIKE

Retourne une valeur booléenne si une chaîne de caractères donnée correspond à un modèle spécifié. Une chaîne peut comprendre des caractères normaux ainsi que des caractères génériques.

Conseil

Vous pouvez écrire des requêtes logiquement équivalentes à l’aide du mot clé LIKE ou de la fonction système RegexMatch . Vous observerez la même utilisation de l’index, quel que soit celui que vous choisissez. Le choix de l'option à utiliser est largement basé sur la préférence syntaxique.

Notes

Étant donné que LIKE pouvez utiliser un index, vous devez créer un index de plage pour les propriétés que vous comparez à l’aide de LIKE.

Vous pouvez utiliser les caractères génériques suivants avec LIKE :

Description  Exemple
% Toute chaîne de zéro caractère ou plus. WHERE c.description LIKE "%SO%PS%"
_(underscore) N'importe quel caractère. WHERE c.description LIKE"%SO_PS%"
[ ] Tous les caractères de la plage spécifiée ([a-f]) ou définie ([abcdef]). WHERE c.description LIKE "%SO[t-z]PS%"
[^] Tous les caractères hors de la plage spécifiée ([^a-f]) ou définie ([^abcdef]). WHERE c.description LIKE "%SO[^abc]PS%"

Le caractère % correspond à toute chaîne de zéro ou plusieurs caractères. Par exemple, en plaçant un % au début et à la fin du modèle, la requête suivante retourne tous les éléments où le champ spécifié contient l’expression sous forme de sous-chaîne :

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%driver%"

Si vous aviez utilisé seulement un caractère % à la fin du modèle, vous ne retourneriez que des éléments dont la description commence par fruit :

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%glove"

De même, le caractère générique au début du modèle indique que vous souhaitez faire correspondre des valeurs à la valeur spécifiée comme préfixe :

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "Road%"

Le mot clé NOT inverse le résultat de l’évaluation de l’expression LIKE du mot clé. Cet exemple retourne tous les éléments qui ne correspondent pas à l’expression LIKE .

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name NOT LIKE "%winter%"

Vous pouvez rechercher des modèles qui incluent un ou plusieurs caractères génériques à l’aide de la clause ESCAPE. Par exemple, si vous souhaitiez rechercher des descriptions contenant la chaîne 20%, vous ne voudriez pas interpréter le signe % comme un caractère générique. Cet exemple interprète le ^ comme caractère d’échappement afin que vous puissiez échapper une instance spécifique de %.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.description LIKE "%20^%%" ESCAPE "^"

Vous pouvez placer des caractères génériques entre crochets pour les traiter comme des caractères littéraux. Lorsque vous placez un caractère générique entre crochets, vous supprimez tous les attributs spéciaux. Ce tableau contient des exemples de caractères littéraux.

Valeur analysée
LIKE "20-30[%]" 20-30%
LIKE "[_]n" _n
LIKE "[ [ ]" [
LIKE "]" ]

IN

Utilisez le mot clé IN pour vérifier si une valeur spécifiée correspond à une valeur dans une liste. Par exemple, la requête suivante retourne tous les éléments dont la catégorie correspond à au moins une des valeurs d’une liste.

SELECT
    *
FROM
    products p
WHERE
    p.category IN ("Accessories", "Clothing")

Conseil

Si vous incluez votre clé de partition dans le filtre IN, votre requête sera automatiquement filtrée sur les seules partitions pertinentes.

Haut de la page

Le mot clé TOP retourne les TOP premiers résultatsN de la requête dans un ordre non défini. En guise de meilleure pratique, utilisez TOP avec la clause ORDER BY pour limiter les résultats aux N premières valeurs ordonnées. La combinaison de ces deux clauses est le seul moyen d’indiquer de manière prévisible les lignes qui sont affectées par TOP.

Vous pouvez utiliser TOP avec une valeur constante, comme dans l’exemple suivant, ou avec une valeur variable à l’aide de requêtes paramétrables.

SELECT TOP 10
    *
FROM
    products p
ORDER BY
    p.price ASC