You are on page 1of 8

Correspondance des fonctions des divers SGBDR

par fadace (Fabien Celaia)


Date de publication : 22.07.2005 Dernire mise jour : 27.05.2011

Correspondance des fonctions des divers SGBDR en vue d'un portage d'un SGBDR l'autre

Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia)

I - Introduction..............................................................................................................................................................3 II - Fonctions d'agrgat................................................................................................................................................3 III - Fonctions sur chanes de caractres................................................................................................................... 4 IV - Fonctions temporelles...........................................................................................................................................5 V - Fonctions numriques........................................................................................................................................... 6 VI - Autres fonctions.................................................................................................................................................... 7

-2Copyright 2005 - Fadace. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://fadace.developpez.com/sgbdcmp/fonctions/

Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia)

I - Introduction
Nous avons tous une langue maternelle, et certains chanceux ont des comptences complmentaires dans d'autres langues. En informatique, la problmatique est la mme : on apprend un language avec une certaine peine, mais lorsque la pratique est l, c'est le language que l'on connat gnralement le mieux. La connaissance d'autes languages est alors plus aise si l'on peut apprendre "par similitudes". L'Esperanto en SGBDR est reprsent par les diverses normes SQL. Il y a cependant des diffrences mineures qui crent des problmes majeurs aux dveloppeurs senss passer d'un SGBDR un autre : le language de chaque SGBDR qui diffre pour crire les objets compils (fonctions, triggers, contraintes, procdures stockes), et les fonctions. Voici donc un petit comparatif qui vous permettra traduire plus aisment une fonction d'un SGBD l'autre. Pour la compatibilit, les acronymes suivants ont t utiliss: SQL = norme SQL2 ASE = Sybase Adaptive Server Enterprise (15) ASA = Sybase Adaptive Server Anywhere MS = Microsoft SQL Server (2000) OR = Oracle (10g) DB = DB2-UDB (8.2) AS = DB2-400 (V5R3) MY = MySQL (4.1) (merci Maximilian) PG = PostgreSql (8.0) IN = Informix

Si d'aventure vous vouliez enrichir cette page avec d'autres SGBDR, n'hsitez pas me faire parvenir votre matrice de correspondance.

II - Fonctions d'agrgat
Action Somme des champs non nulls Nombre des champs non nulls Maximum Minimum Moyenne Ecart type Variance Autres fonctions analytiques Fonction Select caisse, sum(montant) from ecritures where annee=2005 group by caisse Select caisse, count(montant ) from ecritures group by caisse Select max(montant) from ... Select min(montant) from ... Select avg(montant) from ... Select stddev(montant) from... Select var(montant) from... Select variance(montant) from... corr, covar_pop, covar_samp, cume_dist, dense_rank, first, first_value, lag, last, last_value,lead,ntile, percent_rank, percentile_cont, percentile_disc, rank, ration_to_report, row_number, stddev_pop, stddev_samp, var_pop, var_samp Compatibilit SQL,OR,DB,AS,ASA,MS,MY SQL,OR,DB,AS,ASA,MS,MY SQL,OR,DB,AS,MS,ASE,ASA,MY SQL,OR,DB,AS,MS,ASE,ASA,MY SQL,OR,DB,AS,MS,ASE,ASA,MY OR,DB,AS,MY,PG DB,AS,MS OR,MY,PG OR

-3Copyright 2005 - Fadace. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://fadace.developpez.com/sgbdcmp/fonctions/

Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia)

III - Fonctions sur chanes de caractres


Action Concatnation Fonction 'A' || 'B' concat('A','B') 'A' + 'B' concatenate ('A','B') Conversion en chane (var)char(89) to_char(89) convert(char(2), 89), str(89) cast(89 as char(2)) Transformation ASCII char(89) chr(89) ASCII('Y') Longueur d'une chane char[acter]_length('A ') length('A ') datalength('A '), len('A ') Position d'une sous-chane instr('ABCDE', 'CD') locate('CD', 'ABCD') patindex('%CD%', 'ABCD') position('ABCDE', 'CD') Mise en majuscules ucase('BonJour') upper('BonJour') Mise en minuscules lcase('BonJour') lower('BonJour') Remplissage gauche lpad('A',5,'X') replicate('X',5)+'A' Remplissage droite rpad('A',5,'X') 'A'+replicate('X',5) Initiales en majuscules initcap('de LA molle') translate('de LA molle') Suppression des espaces ltrim(' A B ') gauche Suppression des espaces rtrim(' A B ') droite Suppression des espaces trim(' A B ') gauche et droite ltrim(rtrim(' A B ')) Conversion en unicode nchar(509) Recherche phontique soundex('Fabien') Gnration d'espace space(5) lpad('',5,' ') Extraction d'une soussubstr(ABCDE',3,2) chane substring(ABCDE',3,2) Transformation de translate('abcd', 'ac', 'xy') caractres translate('abcd', 'xy', 'ac') Remplacement d'une replace('ABC', 'AB','B') chane str_replace('ABC', 'AB','B') Remplacement d'une stuff('abcdef', 2, 3, 'ijklmn') chane par positionnement left('abcdef',1)+ 'ijklmn'+right('abcdef', datalength('abcdef')-4) 'AB' Rsultat

'89'

'Y' 'Y' 89 3 3

'BONJOUR' 'bonjour' 'XXXXXA' 'AXXXXX' 'De La Molle' 'A B ' ' A B' 'A B' 'ae' 'F150' '' 'CD' 'xbyc' 'BC' 'aijklmnef'

Compatibilit 92,OR,DB,AS,IN,ASA OR,DB,AS,MY,PG MS,ASE,ASA SQL DB,AS OR MS,ASE,MY SQL,MS,OR,DB,AS,MY MS,ASE OR,PG MS,OR,MY SQL,DB,AS,MY OR,DB,AS,MY,ASA,IN,PG MS,ASE,ASA OR,MY DB,AS,MY MS,ASE SQL,MY DB,AS,MY SQL,MS,ASE,ASA,OR,DB,AS,MY,PG DB,AS,MY SQL,MS,ASE,ASA,OR,DB,AS,MY,PG OR,MY MS,ASE OR,MY MS,ASE OR SQL OR,MS,ASE,DB,AS,MY OR,MS,ASE,DB,AS,MY SQL,OR,AS,MY MS,ASE,OR,DB,AS,MY MS OR,MS,ASE,AS,MY MS,ASE,DB,AS,MY OR OR,DB,AS,MY SQL,MS,ASE,MY SQL,OR DB,AS MS,DB2,AS,OR,MY ASE MS MS,ASE OR

-4Copyright 2005 - Fadace. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://fadace.developpez.com/sgbdcmp/fonctions/

Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia)

Renversement d'une chane Partie gauche d'une chane left('ABCD',2) substring('ABCD',0,2) substr('ABCD',1,2) Partie droite d'une chane right('ABCD',2) substr('ABCD',-2)

instr('abcdef',1)||'ijklmn'|| instr('abcdef', -4) reverse('ABCD')

'DCBA' 'AB' 'CD'

ASE,MS,OR,MY MS,DB,AS,MY ASE,ASA,IN OR ASE,MS,DB,AS,MY OR

IV - Fonctions temporelles
Action Conversion en date

Ajout d'un intervalle une date

Retrait d'un interval une date Diffrence entre 2 dates

Nom du jour

Dernier jour du mois Conversion en heure Nom du mois

Conversion en date/heure

Date courante

Heure courante

Fonction Rsultat Compatibilit date('2002-01-02') '01/02/2002' AS,DB to_date('2002-01-02') OR cast('2002-01-02' as ...) SQL,AS,DB,OR,MS,MY,ASA,IN str_to_date('2002-01-02', ...) MY dateadd(M,2,'01.02.2005') '1 avr. 2005 0:00' MS,ASE dateadd, SQL,MY,OR,IN,MS,ASA adddate('01.02.2005', INTERVAL 2 MONTH), '01.02.2005'+interval 2MONTH dateadd(M,-2,'01.02.2005') '1 dec. 2004 0:00' MS,ASE date_sub('1.2.2005', MY INTERVAL 30 DAY) DB,AS,ASA,IN,MS,OR '1.2.3005' - 2 month datediff(day, '1.1.2005', 365 MS,ASE '1.1.2006') MY datediff('1.1.2005', AS,DB '1.1.2006') days(date('1.1.2005'))days(date('31.12.2005')) dayname('19.7.2005') 'Mardi' AS,DB datename(d,'19.7.2005') MS,ASE date_format('19.7.2005', '%W'), dayname('19.7.2005') last_day('4.2.1996') '29.2.1996' OR,MY dateadd(D,-1,convert(datetime,'1.'+datepart(M,dateadd(M,1,'4.2.1996'))+'.'datepart(Y,'4.2.1996')) MS,ASE time('01:00') '01:00:00' DB,AS monthname('19.7.2005') 'Juillet' AS,DB datename(m,'19.7.2005') MS,ASE date_format('19.7.2005', MY '%M'), month('19.7.2005') timestamp('2002/1/1') '2002-01-01-00.00.00.000000' DB,AS to_timestamp('2002/1/1') OR convert(timestamp, MS,ASE '2002/1/1') current_date '18/07/2005' SQL,OR,MY current date DB,AS,ASA getdate() MS,ASE curdate(), now() MY today() IN current time '18:00:34' AS,DB current_time SQL,MY

-5Copyright 2005 - Fadace. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://fadace.developpez.com/sgbdcmp/fonctions/

Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia)

Heure et date courantes

cart avec le GMT

Microseconde d'une heure

Extraction du trimestre d'une date Extraction d'une partie d'une date/heure

Prochain 2me jour de la semaine No de la semaine

getdate() MS,ASE curtime() MY CURRENT_TIMESTAMP MS now(), current timestamp '2005-07-18-18.29.30.303032' AS,DB current_timestamp OR,AS,MS getdate() SQL,MS,ASE current_timestamp() MY current() IN current timezone 20000 AS current_timestamp ... +02:00 OR datediff(hh, 2 MS,ASE getutcdate(),getdate()) microsecond('02:03:04.129') 129 AS,DB,MY datepart(ms,'02:03:04.129') MS,ASE date_format('02:03:04.129', MY '%f') quarter('1.7.2005') 3 AS,DB,MY datepart(q, '1.7.2005') MS,ASE year(), month(), day(), ... AS,DB,MY hour(), minutes(), second() AS,DB,MY datepart(hh, '1.1.2005 MS,ASE 05:04:03') OR,MY extract(hour from '1.1.2005 MY 05:04:03') date_format('1.1.2005 05:04:03', '%h') next_day('19.07.2005',2) '26.07.2005' OR week('19-7-2005') 30 datepart(ww, '19-7-2005') date_format('19-7-2005', '%V') to_number(to_char(to_date('19.7.2005'),'IW')) dayofweek('19.7.2005') 3 datepart(w, '19.7.2005') 2 date_format('19.7.2005', '%w') dayofyear('19.7.2005') 200 datediff(d,'1.1.2005','19.7.2005')+1 date_format('19.7.2005', '%j') AS,DB,MY MS,ASE MY OR AS,DB,MY MS,ASE MY AS,DB,MY MS,ASE MY

Jour de la semaine

Jour de l'anne

V - Fonctions numriques
Action Conversion en dcimal Fonction decimal('45') convert(dec(9,2), '45') to_number('45') convert('45', decimal) cast('45' as decimal) integer('7.7') cast(7.6 as integer) cast(7.6 as integer) 45 Rsultat Compatibilit DB,AS MS,ASE OR MY MS,MY AS,DB AS,DB,MS,ASE OR MY

Conversion en entier

7 7 8 8

-6Copyright 2005 - Fadace. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://fadace.developpez.com/sgbdcmp/fonctions/

Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia)

Conversion en nombre virgule flottante La plus grande valeur La plus petite valeur Valeur absolue

cast(7.6 as signed/ unsigned) float(1.0/3) cast(1/0.3 as float) convert(float, 1/0.3) greatest(5,9, ...) least(5,9, ...) abs(-3.3)

0.333333...1 9 5 3.3

Conversion en degrs degrees(1) 57.29 Conversion en digits (sans digits(3.56) 365 dcimales) convert(int, (str_replace(convert(varchar(30), 3.56),'.',''))) cast((replace(cast ( 3.56 as varchar(30)),'.','')) as int) replace(3.56,'.','') Conversion en digits sur 10 digits(123) 0000000356 positions RIGHT('0000000000'+convert(varchar(10),123),10) substr('0000000000'|| 123 ),-10) Exponentiel exp(2) 7.389 Arrondi suprieur ceiling(3.4) 4 ceil(3.4) Trigonomtrie sin(.1), cos(.1), tan(.1) ... asin(.1), acos(.1), atan(.1) sinh(.1), cosh(.1), tanh(.1) cot(.1) atan2(.3,.2) Logarithme nprien ln(1) 0 LOG2() Logarithme en base 10 log(1) 0 log10(1) log(1,10) Modulo mod(50,7) 1 50 % 7 PI pi() 3.1415... lvation la puissance power(2,4) 16 Valeur alatoire rand(1) ... Arrondi round(4.576,2) 4.58 round(4.574,2) 4.57 Signe d'un nombre sign(-7) -1 Racine carre sqrt(16) 4 Troncature sans arrondi trunc(3.599,2) 3.59 truncate(3.599,2)

AS AS,DB,MS,SQL,OR MS,ASE OR,MY OR,MY DB,AS, ASE, ASA,PG,MS,OR,MY AS,MY AS,DB ASE MS OR

AS,DB MS,ASE OR MS,OR,DB,AS,MY MS,ASE,DB,AS,MY OR,MY MS,ASE,OR,DB,AS,MY MS,ASE,OR,DB,AS,MY OR,DB,AS MS,ASE,DB,AS,MY OR,MY OR,DB,AS MY MS,DB,AS,MY MS,ASE,DB,AS,MY OR OR,DB,AS,MY MS,ASE,MY OR,MS,ASE,DB,AS,MY OR,MS,ASE,DB,AS,MY DB,MS,ASE,AS,MY DB,MS,ASE,OR,AS,MY DB,MS,OR,AS,ASE,MY DB,MS,OR,AS,ASE,MY OR,DB,AS MS,ASE,DB,AS,MY

VI - Autres fonctions
Action Fonction Rsultat n premires lignes d'un set SELECT * FROM A 10 premires lignes WHERE RRN(A) < 10 SELECT * FROM A FETCH FIRST 10 ROWS ONLY SELECT TOP 10 * FROM A AS DB MS,ASE,ASA OR MY Compatibilit

-7Copyright 2005 - Fadace. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://fadace.developpez.com/sgbdcmp/fonctions/

Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia)

Fonction conditionnelle

1re valeur non nulle

Utilisateur courant

Utilisateur de la session

Utilisateur systme

SELECT * FROM A WHERE ROWNUM < 10 SELECT * FROM A LIMIT 0,10 decode('M','M','H','F') Value ('M','M','H','F') case 'M' when 'M' then 'H' else 'F' end coalesce(Null, 0, ...) isnull(NULL,0) Nvl(NULL,0) NULLIF(NULL,0) current_user User user_name() user_sname() session_user suser_name() suser_sname() user() System_user Userenv

'H'

OR DB,AS SQL,OR,MS,ASE,ASA,IN,DB,AS,MY SQL,AS,DB,OR,MS,ASE,ASA,MY OR,AS,ASA,DB,MS,ASE OR,IN SQL,ASA,ASE,MS SQL,MS,DB,MY OR ASE MS SQL,MS,DB,MY ASE MS MY SQL,MS,DB OR

'Utilisateur'

'Login'

'Login systme'

-8Copyright 2005 - Fadace. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://fadace.developpez.com/sgbdcmp/fonctions/