Partager via


Expressions (Transact-SQL)

Combinaison de symboles et d'opérateurs que le Moteur de base de données SQL Server évalue pour obtenir une seule valeur. Les expressions simples peuvent être une seule constante, variable, colonne ou fonction scalaire. Les opérateurs peuvent être utilisés pour associer plusieurs expressions simples en une expression complexe.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

{ constant | scalar_function | [ table_name. ] column | variable 
        | ( expression ) | ( scalar_subquery ) 
    | { unary_operator } expression 
    | expression { binary_operator } expression 
    | ranking_windowed_function | aggregate_windowed_function
}

Arguments

Terme

Définition

constant

Symbole représentant une valeur de données spécifique et unique. Pour plus d'informations, consultez Constantes (Transact-SQL).

scalar_function

Unité de syntaxe Transact-SQL qui fournit un service particulier et renvoie une valeur unique. scalar_function peut être une fonction scalaire intégrée (par exemple SUM, GETDATE ou CAST) ou une fonction scalaire définie par l'utilisateur.

[ table_name. ]

Nom ou alias d'une table.

column

Nom d'une colonne. Seul le nom de la colonne est autorisé dans une expression.

variable

Nom d'une variable ou d'un paramètre. Pour plus d'informations, consultez DECLARE @local_variable (Transact-SQL).

(expression )

Toute expression valide définie dans cette rubrique. Les parenthèses regroupent des opérateurs et garantissent que tous les opérateurs de l'expression entre parenthèses sont traités avant que l'expression qui en résulte ne soit combinée avec une autre.

(scalar_subquery)

Sous-requête qui renvoie une valeur. Par exemple :

SELECT MAX(UnitPrice)

FROM Products

{ unary_operator }

Opérateur qui n'a qu'un seul opérande :

  • + indique un nombre positif ;

  • - indique un nombre négatif ;

  • ~ indique l'opérateur de complément.

Les opérateurs unaires ne s'appliquent qu'à des expressions qui évaluent un type de données de la catégorie des types de données numériques.

{ binary_operator }

Opérateur qui définit la manière de combiner deux expressions pour parvenir à un résultat unique. binary_operator peut être un opérateur arithmétique, l'opérateur d'affectation (=), un opérateur au niveau du bit, un opérateur de comparaison, un opérateur logique, l'opérateur de concaténation de chaînes de caractères (+) ou un opérateur unaire. Pour plus d'informations sur les opérateurs, consultez Opérateurs (Transact-SQL).

ranking_windowed_function

Toute fonction de classement Transact-SQL. Pour plus d'informations, consultez Fonctions de classement (Transact-SQL).

aggregate_windowed_function

Toute fonction d'agrégation Transact-SQL utilisée avec la clause OVER. Pour plus d'informations, consultez Clause OVER (Transact-SQL).

Résultats des expressions

Pour une expression simple composée d'une constante, d'une variable, d'une fonction scalaire ou du nom d'une colonne : le type de donnée, le classement, la précision, l'échelle et la valeur de l'expression correspondent à ceux de l'élément référencé.

Lorsque deux expressions sont combinées avec des opérateurs logiques ou de comparaison, il en résulte un type de données booléen ayant l'une des trois valeurs suivantes : TRUE, FALSE ou UNKNOWN. Pour plus d'informations sur les types de données booléennes, consultez Opérateurs (Transact-SQL).

Lorsque deux expressions sont combinées avec des opérateurs arithmétiques, de niveau bit ou de chaîne de caractères, l'opérateur détermine le type de donnée du résultat.

Les expressions complexes constituées de nombreux symboles et opérateurs conduisent à un résultat à valeur unique. Le type de données, le classement, la précision et la valeur de l'expression qui en résulte sont déterminés en combinant deux par deux les expressions, et ce jusqu'à l'obtention du résultat final. La séquence selon laquelle les expressions sont combinées est définie par le degré de priorité des opérateurs dans l'expression.

Notes

Un opérateur peut combiner deux expressions si elles ont toutes deux un type de données pris en charge par l'opérateur et si au moins l'une des conditions suivantes est vraie :

  • les expressions ont le même type de données ;

  • le type de données ayant le degré de priorité le moins élevé peut être implicitement converti dans le type de données ayant le degré de priorité le plus élevé ;

Si les expressions ne respectent pas ces conditions, les fonctions CAST ou CONVERT peuvent servir à convertir explicitement le type de données ayant le degré de priorité le moins élevé, soit dans le type de données ayant le degré de priorité le plus élevé, soit dans un type de données intermédiaire qui peut être implicitement converti dans le type de données ayant le degré de priorité le plus élevé.

Si aucune conversion implicite ou explicite n'est prise en charge, les deux expressions ne peuvent pas être combinées.

Le classement de toute expression qui s'évalue à une chaîne de caractères est défini d'après les règles de priorité des classements. Pour plus d'informations, consultez Priorité de classement (Transact-SQL).

Dans un langage de programmation tel que C ou MicrosoftVisual Basic, une expression s'évalue toujours à un résultat unique. Cette règle varie pour les expressions dans une liste de sélection Transact-SQL : l'expression est évaluée individuellement pour chaque ligne dans l'ensemble de résultats. Une même expression peut avoir une valeur différente dans chaque ligne de l'ensemble de résultats, mais chaque ligne n'a qu'une seule valeur pour l'expression. Par exemple, dans l'instruction SELECT suivante, ProductID et 1+2 dans la liste de sélection sont tous deux des expressions :

USE AdventureWorks;
GO
SELECT ProductID, 1+2
FROM Production.Product;
GO

L'expression 1+2 s'évalue à 3 dans chaque ligne de l'ensemble de résultats. Bien que l'expression ProductID génère une valeur différente dans chaque ligne de l'ensemble de résultats, chaque ligne n'a qu'une seule valeur pour ProductID.