Les fonctions dans SQL

Le présent tableau fait une synthèse des fonctions de la norme SQL (1992 à 2008), mais aussi des fonctions que l'on trouve dans les principaux dialectes des SGBDR que sont Paradox, Access, MySQL, PostGreSQL, SQL Server, Oracle et InterBase.
Ce tableau ne prétend pas à l'exhaustivité mais permet la comparaison de l'implémentation des fonctions du SQL dans différents dialectes.

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

1. Les fonctions dans SQL

Légende :

O : Oui
N : Non
X : Existe mais syntaxe hors norme
! : Même nom mais fonction différente
- : implémentation partielle

1.1. Agrégation statistique

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
AVG Moyenne O O O O O O O O
COUNT Nombre O O X O O O O O
MAX Maximum O O O O O O O O
MIN Minimum O O O O O O O O
SUM Total O O O O O O O O
EVERY Tous (booléen) O N N N N N N N
ANY / SOME Au moins un (booléen) O N N N N N N N

1.2. Fonction "système"

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
CURRENT_DATE Date courante O N N O O N N O
CURRENT_TIME Heure courante O N N O O N N O
CURRENT_TIMESTAMP Date et heure courante O N N O O O N O
CURRENT_USER Utilisateur courant O N N N O O N N
SESSION_USER Utilisateur autorisé O N N X O O N N
SYSTEM_USER Utilisateur système O N N X O O N N
CURDATE Date du jour N N N O N N N N
CURTIME Heure courante N N N O N N N N
DATABASE Nom de la bases de données courante N N N O N O O N
GETDATE Heure et date courante N N N N N O N N
NOW Heure et date courante N O O O O O O N
SYSDATE Date et/ou heure courante N N N O N N O N
TODAY Date du jour N O N N N N N N
USER Utilisateur courant N N N O N O O O
VERSION Version du SGBDR N N N O O N N N

1.3. Fonctions générales

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
CAST Transtypage O O N O O O O O
COALESCE Valeur non NULL O N N O O O N N
NULLIF Valeur NULL O N N O O O N N
OCTET_LENGTH Longueur en octet O N N O O N O N
DATALENGTH Longueur N N N N N O N N
DECODE Fonction conditionnelle N N N N N N O N
GREATEST Plus grande valeur N N N O N N O N
IFNULL Valeur non NULL N N N O O O N N
LEAST Plus petite valeur N N N N O N O N
LENGTH Longueur N N O O O O O N
NVL Valeur non NULL N N N N N N O N
TO_CHAR Conversion de données en chaîne N N N N N N O N
TO_DATE Conversion en date N N N N O N O N
TO_NUMBER Conversion en nombre N N N N N N O N

1.4. Fonctions de chaînes de caractères

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
|| Concaténation O O N X O N O O
CHAR_LENGTH Longueur d'une chaîne O N N X O N N N
CHARACTER_LENGTH Longueur d'une chaîne O N N O O O N N
COLLATE Substitution à une séquence de caractères O N N N N N N O
CONCATENATE Concaténation O N N N N O N N
CONVERT Conversion de format de caractères O N N N N ! O O
LIKE (prédicat) Comparaison partielle O O X O O O O O
LOWER Mise en minuscule O O N O O O O N
POSITION Position d'une chaîne dans une sous chaîne O N N O O N N N
SUBSTRING Extraction d'une sous chaîne O O N O O N N N
TRANSLATE Conversion de jeu de caractères O N N N X N X N
TO_CHAR Conversion de données en chaîne N N N N N N O N
TRIM Suppression des caractères inutiles O O N O O N O N
UPPER Mise en majuscule O O N O O O O O
CHAR Conversion de code en caractère ASCII N N O O N O N N
CHAR_OCTET_LENGTH Longueur d'une chaîne en octets N N N N N O N N
CHARACTER_MAXIMUM_LENGTH Longueur maximum d'une chaîne N N N N N O N N
CHARACTER_OCTET_LENGTH Longueur d'une chaîne en octets N N N N N O N N
CONCAT Concaténation N N O O N O O N
ILIKE LIKE insensible à la casse N N N N O N N N
INITCAP Initiales en majuscule N N N N O N O N
INSTR Position d'une chaîne dans une autre N N O O N N O N
LCASE Mise en minuscule N N O O N O O N
LOCATE Position d'une chaîne dans une autre N O O O N O O N
LPAD Remplissage à gauche N N N O O N O N
LTRIM TRIM à gauche N O O O O O O N
NCHAR Conversion de code en caractère UNICODE N N N N N O N N
PATINDEX Position d'un motif dans une chaîne N N N N N O N N
REPLACE Remplacement de caractères N N N O N O O N
REVERSE Renversement N N N O N O O N
RPAD Remplissage à droite N N N O O N O N
RTRIM TRIM à droite N N O O O O O N
SPACE Génération d'espaces N N O O N O O N
SUBSTR Extraction d'une sous chaîne N N N N N N O N
UCASE Mise en majuscule N N O O N O O N
SIMILAR Recherches de motifs avancés N N N N N N N N

1.5. Fonctions de chaînes de bits

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
BIT_LENGTH Longueur en bit O N N N N N N N
& "et" pour bit logique N N ? ? ? O ? ?
| "ou" pour bit logique N N ? ? ? O ? ?
^ "ou" exclusif pour bit logique N N ? ? ? O ? ?

1.6. Fonctions numériques

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
% Modulo N N N O O O N N
+ - * / ( ) Opérateurs et parenthésage O O O O O O O O
ABS Valeur absolue N N O O O O O N
ASCII Conversion de caractère en code ASCII N N O O O O O N
ASIN Angle de sinus N N N O O O O N
ATAN Angle de tangente N N N O O O O N
CEILING Valeur approchée haute N N O O N O N N
COS Cosinus N N O O O O O N
COT Cotangente N N O O O O N N
EXP Exponentielle N N O O O O O N
FLOOR Valeur approchée basse N N O O O O O N
LN Logarithme népérien N N N N N N O N
LOG Logarithme népérien N N O O N O O N
LOG(n,m) Logarithme en base n de m N N N N O N O N
LOG10 Logarithme décimal N N N O N O O N
MOD Modulo N N O O O O O N
PI Pi N N N O O O O N
POWER Elévation à la puissance N N O O N O O N
RAND Valeur aléatoire N N O O N O N N
ROUND Arrondi N N O O O O N N
SIGN Signe N N O O O O O N
SIN Sinus N N O O O O O N
SQRT Racine carrée N N O O O O N N
TAN Tangente N N O O O O O N
TRUNC Troncature N N N N N N O N
TRUNCATE Troncature N N   O O O O N
UNICODE Conversion de caractère en code UNICODE N N N N N O ? N

1.7. Fonctions temporelles

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
EXTRACT Partie de date O O N O O N O N
INTERVAL (opérations sur) Durée O N N N N N O N
OVERLAPS (prédicat) Recouvrement de période O N N N O N N N
ADDDATE Ajout d'intervalle à une date N N N O N N N N
AGE Age N N N N O N N N
DATE_ADD Ajout d'intervalle à une date N N N O N N N N
DATE_FORMAT Formatage de date N N N O N N N N
DATE_PART Partie de date N N N N O N N N
DATE_SUB Retrait d'intervalle à une date N N N O N N N N
DATEADD Ajout de date N N N N N O N N
DATEDIFF Retrait de date N N N N N O N N
DATENAME Nom d'une partie de date N N N N N O N N
DATEPART Partie de date N N N N N O N N
DAY Jour d'une date N N N N N O N N
DAYNAME Nom du jour N N O O N O N N
DAYOFMONTH Jour du mois N N N O N N N N
DAYOFWEEK Jour de la semaine N N N O N N N N
DAYOFYEAR Jour dans l'année N N N O N N N N
HOUR Extraction de l'heure N N O O N O N N
LAST_DAY Dernier jour du mois N N N N N N O N
MINUTE   N N O O N O N N
MONTH Mois d'une date N N O O N O O N
MONTH_BETWEEN MONTH_BETWEEN N           N N
MONTHNAME Nom du mois N N O O N O N N
NEXT_DAY Prochain premier jour de la semaine N N N N N N O N
SECOND Extrait les secondes N N O O N O N N
SUBDATE Retrait d'intervalle à une date N N N O N N N N
WEEK Numéro de la semaine N N O O N O O N
YEAR Année d'une date N N O O N O O N

1.8. Fonctions OLAP (norme SQL:1999)

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Interbase
CUBE Sous totaux des agrégats pour toutes les combinaisons possibles O N N N N O O N
ROLLUP Sous totaux des agrégats pour toutes les comibinaisons visibles O N N N N O O N
GROUPING SETS Sous totaux des agrégats pour toutes les comibnaisons spécifiées O N N N N O O N
GROUPINGS Indicateur de sous totalisation O N N N N O O N
NULL FIRTS / NULL LAST Spécification de classement pour les marqueurs NULL O N N N N N O N

1.9. Fonctions de fenêtrage et analytiques (normes 2003 et 2008)

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Firebird
ROW_NUMBER Numérotation des lignes O N N N N O O N
RANK Classement avec trou (ex æquo) O O N N N N O O
DENSE_RANK Classement sans trou (ex æquo) O N N N N O O N
CUME_DIST Distibution cumulative O N N N N N ? N
NTILE N-tile (décile, centile, ....) O N N N N O O N
Agrégats (MAX, MIN, COUNT, SUM...) Calcul d'agrégat avec fenêtrage O N N N N O O N
ROWS / RANGE Fenêtre de calcul par ligne ou valeurs O N N N N N O N
PRECEDING * / FOLLOWING * / BETWEEN Bornage de la fenêtre de calcul O N N N N N O N
LAG / LEAD Borne précédente, suivante O N N N N N O N
FIRST_VALUE / LAST_VALUE / NTH_VALUE Borne première, dernière, Ne. valeur O N N N N N O N
EXCLUDEE (CURRENT ROW, GROUP TIES, NO OTHER) Exclusion de ligne O N N N N N N N
Clause WINDOW Définition d'une fenêtre de calcul O N N N N N N N

1.10. Prédicat, opérateurs et structures diverses

Fonction Description Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Firebird
CASE Structure conditionnelle O N N O O O X O
IS [NOT] TRUE Vrai O N N N N N N N
IS [NOT] FALSE Faux O N N N N N N N
IS [NOT] UNKNOWN Inconnu O N N N N N N N
IS [NOT] NULL NULL O O X O O O O O
INNER JOIN Jointure interne O O O O O O N O
LEFT, RIGHT, FULL OUTER JOIN Jointure externe O O O O O O N O
NATURAL JOIN Jointure naturelle O N N O O N N N
UNION JOIN Jointure d'union O N N N N N N N
LEFT, RIGHT, FULL OUTER NATURAL JOIN Jointure naturelle externe O N N X O N N N
INTERSECT Intersection (ensemble) O ? N N O N X N
UNION Union (ensemble) O ? O N O O O O
EXCEPT Différence (ensemble) O ? N N O N X N
[NOT] IN Liste O O O X O O O O
[NOT] BETWEEN Fourchette   O O O O O O O
[NOT] EXISTS Existence O ? ? N O O O O
ALL Comparaison à toutes les valeurs d'un ensemble O ? O N O O O O
ANY / SOME Comparaison à au moins une valeur de l'ensemble O ? O N O O O O
UNIQUE Existance sans doublons O N N N N N N N
MATCH UNIQUE Correspondance O N N N N N N N
row value construteur Construteur de ligne valuées O N N N N - - N

1.11. Fonctions spéciales

Fonction Norme SQL Description Paradox Access MySQL PostGreSQL SQL Server Oracle Firebird
TABLE SAMPLE Échantillon de données O N N N N O O N
TRUNCATE Vidage de table O N N N N O O O
OFFSET / FETCH Limitation des lignes retournées O N N N N N N N
LIMIT/TOP Nombre de ligne retournée N N N LIMIT LIMIT TOP N ROWS
"Row Id" Identifiant de ligne N N N _rowid oid N rowid ?

1.12. Sous requêtes

Fonction Norme SQL Paradox Access MySQL PostGreSQL SQL Server Oracle Firebird
Imbriquées O O O N O O O O
Corrélées O O O N O O O O
Dans la clause SELECT O X O N O O O O
Dans la clause FROM O N N N O O O N
Dans la clause WHERE O O O N O O O O
Dans la clause HAVING O O N N O O O O
CTE (Common Table Expression : expression de table) O N N N N O O O
Requêtes récursives via CTE O N N N N O X O

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2009 Frédéric Brouard. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.