SQL

10. 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.

1. Les fonctions dans SQL
1.1. Agrégation statistique
1.2. Fonction "système"
1.3. Fonctions générales
1.4. Fonctions de chaînes de caractères
1.5. Fonctions de chaînes de bits
1.6. Fonctions numériques
1.7. Fonctions temporelles
1.8. Fonctions OLAP (norme SQL:1999)
1.9. Fonctions de fenêtrage et analytiques (normes 2003 et 2008)
1.10. Prédicat, opérateurs et structures diverses
1.11. Fonctions spéciales
1.12. Sous requêtes


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