Les fonctions dans SQL

SQLPro

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.

- Titre : Les fonctions dans SQL

- Auteur : SQLPro

- Parution : 9 février 2009

- Licence : 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.

Sommaire

- I. Les fonctions dans SQL

- I-A. Agrégation statistique

- I-B. Fonction « système »

- I-C. Fonctions générales

- I-D. Fonctions de chaînes de caractères

- I-E. Fonctions de chaînes de bits

- I-F. Fonctions numériques

- I-G. Fonctions temporelles

- I-H. Fonctions OLAP (norme SQL:1999)

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

- I-J. Prédicat, opérateurs et structures diverses

- I-K. Fonctions spéciales

- I-L. Sous-requêtes

I - 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

I-A - 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

I-B - 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 courantes

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 base de données courante

N

N

N

O

N

O

O

N

GETDATE

Heure et date courantes

N

N

N

N

N

O

N

N

NOW

Heure et date courantes

N

O

O

O

O

O

O

N

SYSDATE

Date et/ou heure courantes

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

I-C - 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 octets

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

I-D - 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 minuscules

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 majuscules

O

O

N

O

O

O

O

O

CHAR

Conversion de code en caractères 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

Initiale 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 minuscules

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ères 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 majuscules

N

N

O

O

N

O

O

N

SIMILAR

Recherche de motifs avancés

N

N

N

N

N

N

N

N

I-E - 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

?

?

I-F - 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ères 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

Élé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ères en code UNICODE

N

N

N

N

N

O

?

N

I-G - 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

I-H - 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 combinaisons visibles

O

N

N

N

N

O

O

N

GROUPING SETS

Sous-totaux des agrégats pour toutes les combinaisons 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

I-I - 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

Distribution cumulative

O

N

N

N

N

N

?

N

NTILE

N-tile (décile, centileKITOOODVP-DOTS.)

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

I-J - 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

Existence sans doublon

O

N

N

N

N

N

N

N

MATCH UNIQUE

Correspondance

O

N

N

N

N

N

N

N

row value construteur

Constructeur de lignes valuées

O

N

N

N

N

-

-

N

I-K - 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 lignes retournées

N

N

N

LIMIT

LIMIT

TOP

N

ROWS

« Row Id »

Identifiant de ligne

N

N

N

_rowid

oid

N

rowid

?

I-L - 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