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.
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 :
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 seule constante ou variable ou d'une seule fonction scalaire ou nom de colonne : les type de données, classement, précision, échelle et valeur de l'expression sont 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 de comparaison (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 Microsoft Visual 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 le jeu 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 AdventureWorks2008R2;
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.
Voir aussi