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 Google Bookmarks ! Facebook Digg del.icio.us Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks 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

Livres
SQL - développement
SQL - le cours de référence sur le langage SQL
Avant d'aborder le SQL
Définitions
SGBDR fichier ou client/serveur ?
La base de données exemple (gestion d'un hôtel)
Modélisation MERISE
Mots réservés du SQL
Le SQL de A à Z
Les fondements
Le simple (?) SELECT
Les jointures, ou comment interroger plusieurs tables
Groupages, ensembles et sous-ensembles
Les sous-requêtes
Insérer, modifier, supprimer
Création des bases
Gérer les privilèges ("droits")
Toutes les fonctions de SQL
Les techniques des SGBDR
Les erreur les plus fréquentes en SQL
Les petits papiers de SQLPro
Conférence Borland 2003
L'héritage des données
Données et normes
Modélisation par méta données
Optimisez votre SGBDR et vos requêtes SQL
Le temps, sa mesure, ses calculs
QBE, le langage de ZLOOF
Des images dans ma base
La jointure manquante
Clefs auto incrémentées
L'indexation textuelle
L'art des "Soundex"
Une seule colonne, plusieurs données
La division relationnelle, mythe ou réalité ?
Gestion d'arborescence en SQL
L'avenir de SQL
Méthodes et standards
Les doublons
SQL Server
Eviter les curseurs
Un aperçu de TRANSACT SQL V 2000
SQL Server 2000 et les collations
Sécurisation des accès aux bases de données SQL Server
Des UDF pour SQL Server
SQL Server et le fichier de log...
Paradox
De vieux articles publiés entre 1995 et 1999 dans la défunte revue Point DBF

  

Copyright © 2009 Frédéric Brouard. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.