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 |