Menu |
Index/help |
Une expression est un ensemble de variables (contenu d'une colonne), de constantes et de fonctions combinées au moyen d'opérateurs.
Les fonctions prennent une valeur dépendant de leurs arguments qui peuvent être eux-mêmes des expressions.
Les expressions peuvent figurer :
Il existe trois types d'expressions correspondant chacun à un type de données de SQL : arithmétique, chaîne de caractère, date. A chaque type correspondent des opérateurs et des fonctions spécifiques.
SQL autorise les mélanges de types dans les expressions et effectuera les conversions nécessaires : dans une expression mélangeant dates et chaînes de caractères, les chaînes de caractères seront converties en dates, dans une expression mélangeant nombres et chaînes de caractères, les chaînes de caractères seront converties en nombre.
Une expression arithmétique peut contenir :
combinés au moyen des opérateurs arithmétiques.
Les opérateurs arithmétiques présents dans sql sont les suivants :
Remarque : la division par 0 provoque une fin avec code d'erreur.
Une expression arithmétique peut comporter plusieurs opérateurs. Dans ce cas, le résultat de l'expression peut varier selon l'ordre dans lequel sont effectuées les opérations. Les opérateurs de multiplication et de division sont prioritaires par rapport aux opérateurs d'addition et de soustraction. Des parenthèses peuvent être utilisées pour forcer l'évaluation de l'expression dans un ordre différent de celui découlant de la priorité des opérateurs.
Exemple : Donner pour chaque commercial son revenu (salaire + commission).
Exemple : Donner la liste des commerciaux classée par commission sur salaire décroissant.
Exemple : Donner la liste des employés dont la commission est inférieure à 5% du salaire.
Dans ce paragraphe, ont été regroupées les fonctions ayant un ou plusieurs nombres comme arguments, et renvoyant une valeur numérique.
Renvoie la valeur absolue de nb.
Renvoie le plus petit entier supérieur ou égal à nb.
Renvoie le cosinus de n, n étant un angle exprimé en radians.
Renvoie le cosinus hyperbolique de n.
Renvoie e puissance n.
Renvoie le plus grand entier inférieur ou égal à nb.
Renvoie le logarithme népérien de n qui doit être un entier strictement positif.
Renvoie le logarithme en base m de n. m doit être un entier strictement supérieur à 1, et n un entier strictement positif.
Renvoie le reste de la division entière de m par n, si n vaut 0 alors renvoie m. Attention, utilisée avec au moins un de ses arguments négatifs, cette fonction donne des résultats qui peuvent être différents d'un modulo classique. Cette fonction ne donne pas toujours un résultat dont le signe du diviseur.
Renvoie m puissance n, m et n peuvent être des nombres quelconques entiers ou rééls mais si m est négatif n doit être un entier.
Si m est positif, renvoie n arrondi (et non pas tronqué) à m chiffres après la virgule. Si m est négatif, renvoie n arrondi à m chiffres avant la virgule. m doit être un entier et il vaut 0 par défaut.
Renvoie -1 si nb est négatif, 0 si nb est nul, 1 si nb est positif.
Renvoie le sinus de n, n étant un angle exprimé en radians.
Renvoie le sinus hyperbolique de n.
Renvoie la racine carrée de nb qui doit être un entier positif ou nul.
Renvoie la tangente de n, n étant un angle exprimé en radians.
Renvoie la tangente hyperbolique de n.
Si m est positif, renvoie n arrondi tronqué à m chiffres après la virgule. Si m est négatif, renvoie n tronqué à m chiffres avant la virgule. m doit être un entier et il vaut 0 par défaut.
Exemple : Donner pour chaque employé son salaire journalier.
Il existe un seul opérateur sur les chaînes de caractères : la concaténation. Cet opérateur se note au moyen de deux caractères |(barre verticale) accolés. Le résultat d'une concaténation est une chaîne de caractères obtenue en écrivant d'abord la chaîne à gauche de || puis celle à droite de ||.
Le paragraphe suivant contient les fonctions travaillant sur les chaînes de caractères et renvoyant des chaînes de caractères.
Renvoie la chaîne obtenue en concaténant chaîne1 à chaîne2. Cette fonction est équivalente à l'opérateur de concaténation | |.
Renvoie chaîne en ayant mis la première lettre de chaque mot en majuscule et toutes les autres en minuscule. Les séparateurs de mots sont les espaces et les caractères non alphanumériques.
Renvoie chaîne en ayant mis toutes ses lettres en minuscules.
Renvoie la chaîne obtenue en complétant, ou en tronquant, chaîne pour qu'elle ait comme longueur long en ajoutant éventuellement à gauche le caractère (ou la chaîne de caractères) char. La valeur par défaut de char est un espace.
Renvoie la chaîne obtenue en parcourant à partir de la gauche chaîne et en supprimant tous les caractères qui sont dans ens. On s'arrête quand on trouve un caractère qui n'est pas dans ens. La valeur de defaut de ens est un espace.
Renvoie chaine dans laquelle toutes les occurrences de la chaîne de caractères avant ont été remplacés par la chaîne de caractèresaprès.
Renvoie la chaîne obtenue en complétant, ou en tronquant, chaîne pour qu'elle ait comme longueur long en ajoutant éventuellement à droite le caractère (ou la chaîne de caractères) char. La valeur par défaut de char est un espace.
Renvoie la chaîne obtenue en parcourant à partir de la droite chaîne et en supprimant tous les caractères qui sont dans ens. On s'arrête quand on trouve un caractère qui n'est pas dans ens. La valeur de defaut de ens est un espace.
Renvoie la chaîne de caratères constituée de la représentation phonétique des mots de chaîne.
Renvoie la partie de chaîne commençant au caractère m et ayant une longueur de n.
Renvoie une chaîne de caratères en remplaçant chaque caratère de chaîne présent dans avant par le caractère situé à la même position dans après. Les caratères de chaîne non présents dans avant ne sont pas modifiés. avant peut contenir plus de caractères que apres, dans ce cas les caratères de avant sans correspondants dans apres seront supprimés de chaîne .
Renvoie chaîne en ayant mis toutes ses lettres en majuscules.
Le paragraphe suivant contient les fonctions travaillant sur les chaînes de caractères et renvoyant des entiers.
Renvoie la position du premier caractère de chaîne correspondant à l'occurence occ de sous-chaîne en commençant la recherche à la position début.
Renvoie la longueur de chaîne, exprimée en nombre de caractères.
Au moyen des opérateurs arithmétiques + et - il est possible de construire les expressions suivantes :
Renvoie la date obtenue en ajoutant n mois à date. n peut être un entier quelconque. Si le mois obtenu a moins de jours que le jour de date, le jour obtenu est le dernier du mois.
Renvoie la date du dernier jour du mois de date.
Renvoie le nombre de mois entre date2 et date1, si date2 est après date1 le résultat est positif, sinon le résultat est négatif. Si les jours date2 et date1 sont les mêmes, ou si ce sont les derniers jours du mois, le résultat est un entier. La partie fractionnaire est calculée en considérant chaque jour comme 1/31ème de mois
Renvoie la date du prochain jour de la semaine dont le nom est nom_de_jour.
Renvoie date arrondie à l'unité spécifiée dans précision. L'unité de précision est indiquée en utilisant un des masques de mise en forme de la date. On peut ainsi arrondir une date à l'année, au mois, à la minute,... Par défaut la précision est le jour.
Renvoie la date et l'heure courantes du système d'exploitation hote.
Renvoie date tronquée à l'unité spécifiée dans précision. Les paramètres sont analogues à ceux de la fonction ROUND.
Exemple : Donner la date du lundi suivant l'embauche de chaque employé.
Exemple : Donner la date date d'embauche de chaque employé arrondie à l'année.
Exemple : Donner pour chauqe employé le nombre de jours depuis son embauche.
Renvoie le nombre correspondant au code ascii du premier caractère de chaine.
Renvoie le caractère dont nombre est le code ascii.
Renvoie la chaîne de caratères en obtenue en convertissant nombre
en fonction de format.
Format est une chaîne de caractères pouvant
contenir les caractères suivants :
représente un chiffre (non représenté si non significatif)
représente un chiffre (représenté même si non significatif)
point décimal apparent
définit la position du point décimal non apparent
une virgule apparaitra à cet endroit
un $ précèdera le premier chiffre significatif
le nombre sera représenté par des blancs s'il vaut 0
le nombre sera représenté avec un exposant (le spécifier avant MI ou PR)
le signe négatif sera à droite
un nombre négatif sera entre <>
Renvoie conversion d'une date en chaîne de caractères. Le format indique quelle partie de la date doit apparaître, c'est une combinaison des codes suivants :
siècle avec signe
siècle
année (avec signe et virgule)
année( avec virgule)
année
3 derniers chiffres de l'année
2 derniers chiffres de l'année
dernier chiffre de l'année
numéro du trimestre dans l'année
numéro de la semaine dans l'année
numéro de la semaine dans le mois
numéro du mois
numéro du jour dans l'année
numéro du jour dans le mois
numéro du jour dans la semaine
heure (sur 12 heures)
heure sur 24 heures
minutes
secondes
secondes après minuit
jour du calendrier julien
Les formats suivants permettent d'obtenir des dates en lettres ( en anglais)
:
année en toutes lettres
nom du mois
nom du mois abrégé sur 3 lettres
nom du jour
nom du jour abrégé sur 3 lettres
indication am ou pm
indication avant ou après jesus christ
Les suffixes suivants modifient la présentation du nombre auquel ils sont
accolés :
ajout du suffixe ordinat st, nd, rd, th
nombre en toutes lettres
Tout caractère spécial inséré dans le format sera reproduit tel quel dans la chaîne de caractères résultat.
Permet de convertir une chaîne de caracteres en donnée de type date. Le format est identique à celui de la fonction TO_CHAR.
Convertit chaine en sa valeur numérique.
Remarque : On peut également inserer dans le format une chaîne de caractères quelconque, à condition de la placer entre guillemets"".
Exemple : Donner la liste de tous les employés dont le nom ressemble à DUPONT.
Exemple : Donner la liste de tous les noms des employés en ayant supprimé tous les 'L' et les 'E' en tête des noms.
Exemple : Donner la liste de tous les noms des employés en ayant remplacé les A et les M par des * dans les noms.
Exemple : Afficher tous les salaires avec un $ en tête et au moins trois chiffres ( dont deux décimales).
Renvoie la plus grande des valeurs expr1, expr2,.... Toutes les expressions sont converties au format de expr1 avant comparaison.
Renvoie la plus petite des valeurs expr1, expr2,.... Toutes les expressions sont converties au format de expr1 avant comparaison.
Prend la valeur expr_1, sauf si expr_1
est NULL auquel cas NVL prend la
valeur expr_2.
Une valeur NULL en SQL est une valeur non définie.
Lorsque l'un des termes d'une expression a la valeur NULL, l'expression
entière prend la valeur NULL. D'autre part, un prédicat comportant
une comparaison avec une expression ayant la valeur NULL prendra
toujours la valeur faux. La fonction NVL
permet de remplacer une valeur NULL par une valeur significative.
Cette fonction permet de choisir une valeur parmi une liste d'expressions,
en fonction de la valeur prise par une expression servant de critère de
sélection.
Le résultat récupéré est :
res_1 si l'expression crit a la valeur val_1
res_2 si l'expression crit a la valeur val_2
def (la valeur par défaut) si l'expression crit n'est égale à aucune des expressions val_1, val_2,...,.
Les expressions résultats res_1, res_2, ..., def peuvent être de types différents : caractère et numérique, ou caractère et date (le résultat est du type de la première expression rencontré dans le DECODE).
La fonction DECODE permet également de mélanger dans une colonne résultat des informations venant de plusieurs colonnes d'une même table.
Exemple : Donner pour chaque employé ses revenus (salaire + commission).
Exemple : Donner la liste des employés avec pour chacun d'eux sa catégorie (président = 1, directeur = 2, autre = 3)
Exemple : Donner la liste des employés en les identifiant par leur fonction dans le département 10 et par leur nom dans les autres départements.