Partager via


SELECT - Langage de requête dans Cosmos DB (dans Azure et Fabric)

La SELECT clause identifie les champs à retourner dans les résultats de la requête. La clause projette ensuite ces champs dans le jeu de résultats JSON.

Chaque requête se compose d’une SELECT clause et éventuellement FROM de WHERE clauses, conformément aux normes ANSI SQL. En règle générale, la source de la FROM clause est énumérée et la WHERE clause applique un filtre sur la source pour récupérer un sous-ensemble d’éléments JSON.

Syntaxe

SELECT <select_specification>  

<select_specification> ::=
      '*'
      | [DISTINCT] <object_property_list>
      | [DISTINCT] VALUE <scalar_expression> [[ AS ] value_alias]  
  
<object_property_list> ::=
{ <scalar_expression> [ [ AS ] property_alias ] } [ ,...n ]

Arguments

Descriptif
select_specification Propriétés ou valeur à sélectionner pour le jeu de résultats.
* Spécifie que la valeur doit être récupérée sans apporter de modifications. Plus précisément si la valeur traitée est un objet, toutes les propriétés sont récupérées.
object_property_list Spécifie la liste des propriétés à récupérer. Chaque valeur retournée est un objet avec les propriétés spécifiées.
VALUE Spécifie que la valeur JSON doit être récupérée au lieu de l’objet JSON complet. Cet argument, contrairement <à property_list> n’encapsule pas la valeur projetée dans un objet.
DISTINCT Spécifie que les doublons des propriétés projetées doivent être supprimées.
scalar_expression Expression représentant la valeur à calculer.

Types de retour

Retourne les champs ou valeurs projetés comme spécifié.

Examples

Cette section contient des exemples d’utilisation de cette construction de langage de requête.

Sélectionner des valeurs de chaîne statique

Dans cet exemple, deux valeurs de chaîne statique et retourne un tableau avec un seul objet contenant les deux valeurs. Étant donné que les valeurs ne sont pas nommées, un nombre généré séquentiel est utilisé pour nommer le champ json équivalent.

SELECT
  "Cosmic", "Works"
[
  {
    "$1": "Cosmic",
    "$2": "Works"
  }
]

Champs de projet

Dans cet exemple, la projection JSON est utilisée pour affiner la structure exacte et les noms de champs pour l’objet JSON résultant. Ici, un objet JSON est créé avec des champs nommés identifier et model. L’objet JSON externe n’est toujours pas nommé. Par conséquent, un nombre généré ($1) est utilisé pour nommer ce champ.

SELECT {
  identifier: p.name,
  model: p.sku
}
FROM
  products p
[
  {
    "$1": {
      "identifier": "Remdriel Shoes",
      "model": "61506"
    }
  },
  {
    "$1": {
      "identifier": "Tirevy trunks",
      "model": "73402"
    }
  },
  ...
]

Chaîne statique de projet

Dans cet exemple, le mot clé VALUE est utilisé avec une chaîne statique pour créer un tableau de chaînes en conséquence.

SELECT VALUE
  "Cosmic Works"
[
  "Cosmic Works"
]

Projection complexe

Dans cet exemple, la requête utilise une combinaison d’une SELECT clause, du VALUE mot clé, d’une FROM clause et de la projection JSON pour effectuer une requête commune avec les résultats transformés en objet JSON pour que le client analyse.

SELECT VALUE {
  name: p.name,
  link: p.metadata.link,
  firstTag: p.tags[0]["value"]
}
FROM
  products p
[
  {
    "name": "Remdriel Shoes",
    "link": "https://www.adventure-works.com/remdriel-shoes/68719521615.p",
    "firstTag": "suede-leather-and-mesh"
  },
  {
    "name": "Tirevy trunks",
    "link": "https://www.adventure-works.com/tirevy-trunks/68719520573.p",
    "firstTag": "polyester"
  },
  ...
]

Remarques

  • La syntaxe n’est valide que si FROM la SELECT * clause a déclaré exactement un alias. SELECT * fournit une projection d’identité, qui peut être utile si aucune projection n’est nécessaire. SELECT * est valide uniquement si FROM la clause est spécifiée et n’a introduit qu’une seule source d’entrée.
  • Les deux SELECT <select_list> sont SELECT * le sucre syntaxique et peuvent être exprimés à l’aide d’instructions simples SELECT .
  • L’expression SELECT * FROM ... AS from_alias ... est équivalente à SELECT from_alias FROM ... AS from_alias ....
  • L’expression SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] est équivalente à SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].