Expression SQL

S’applique à :check marked yes Databricks SQL check marked yes Databricks Runtime

Une expression est une formule qui calcule un résultat basé sur des littéraux ou des références de colonne, de champ ou de variable à l’aide de fonctions ou d’opérateurs.

Syntaxe

{ literal |
  named_parameter_marker |
  unnamed_parameter_marker |
  column_reference |
  field_reference |
  parameter_reference |
  CAST expression |
  CASE expression |
  expr operator expr |
  operator expr |
  expr [ expr ] |
  function_invocation |
  ( expr ) |
  ( expr, expr [, ... ] ) |
  scalar_subquery }

scalar_subquery
  ( query )

Les crochets expr [ expr ] sont des crochets réels et ils n’indiquent pas de syntaxe facultative.

Paramètres

  • literal

    Littéral d’un type décrit dans Types de données.

  • named_parameter_marker

    Un espace réservé nommé et typé pour une valeur fournie par l'API qui soumet l'instruction SQL.

  • unnamed_parameter_marker

    Un espace réservé non nommé et typé pour une valeur fournie par l'API qui soumet l'instruction SQL.

  • column_reference

    Référence à une colonne dans un alias de table ou de colonne.

  • field_reference

    Référence à un champ dans un type STRUCT.

  • parameter_reference

    Référence à un paramètre d’une fonction définie par l’utilisateur SQL à partir du corps de la fonction. La référence peut utiliser le nom non qualifié du paramètre ou qualifier le nom avec le nom de la fonction. Les paramètres constituent l’étendue la plus externe lors de la résolution des identificateurs.

  • Expression CAST

    Expression castant l’argument en un type différent.

  • Expression CASE

    Expression qui autorise une évaluation conditionnelle.

  • expr

    Expression elle-même, qui est associée à un operator ou qui est un argument d’une fonction.

  • opérateur

    Opérateur unaire ou binaire.

  • expr [ expr ]

    Référence à un élément de tableau ou une clé de mappage.

  • function_invocation

    Un appel d’une fonction intégrée ou définie par l’utilisateur.

    Pour plus d’informations, consultez function_invocation.

  • ( expr )

    Priorité appliquée qui remplace la priorité des opérateurs.

  • ( expr, expr [, … ] )

    Crée un struct de deux ou plusieurs champs. Cette notation est synonyme de la fonction struct.

  • scalar_subquery :

    • ( query )

      Expression basée sur une requête qui doit retourner une seule colonne et une ligne maximum.

Les pages de chaque fonction et opérateur décrivent les types de données attendus par leurs paramètres. Azure Databricks effectue un cast implicite en types attendus à l’aide des règles de type de données SQL. si un opérateur ou une fonction n’est pas valide pour l’argument fourni, Azure Databricks génère une erreur.

Pour plus d’informations sur la résolution de noms, consultez Résolution de colonnes, de champs, de paramètres et de variables.

Expression de constante

Expression basée uniquement sur des littéraux ou des fonctions déterministes sans arguments. Azure Databricks peut exécuter l’expression et utiliser une constante résultante où les littéraux habituels sont obligatoires.

expression booléenne

Expression avec le type de résultat BOOLEAN. Une expression booléenne est également parfois appelée condition ou prédicat.

Sous-requête scalaire

Une expression de forme ( query ). La requête doit retourner une table qui contient une colonne et une ligne maximum.

Si la requête ne retourne aucune ligne, le résultat est NULL. Si la requête retourne plusieurs lignes, Azure Databricks retourne une erreur. Dans le cas contraire, le résultat est la valeur retournée par la requête.

Expression simple

Expression qui ne contient pas de query, comme une sous-requête scalaire ou un prédicat EXISTS.

Exemples

> SELECT 1;
  1

> SELECT (SELECT 1) + 1;
  2

> SELECT 1 + 1;
  2

> SELECT 2 * (1 + 2);
  6

> SELECT 2 * 1 + 2;
  4

> SELECT substr('Spark', 1, 2);
  Sp

> SELECT c1 + c2 FROM VALUES(1, 2) AS t(c1, c2);
  3

> SELECT a[1] FROM VALUES(array(10, 20)) AS T(a);
  20

> SELECT true;
  true

> SELECT (c1, (c2, c3)) FROM VALUES(1, 2, 3) AS T(c1, c2, c3);
  {"c1":1,"col2":{"c2":2,"c3":3}}