You are on page 1of 8

Correspondance des fonctions des divers SGBDR

par fadace (Fabien Celaia)
Date de publication : 22.07.2005 Dernière mise à jour : 27.05.2011

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

..............................................................developpez..Fonctions sur chaînes de caractères.................................... ne peut être faite de ce site et de l'ensemble de son contenu : textes................................. même partielle......................................................... 6 VI ........................................................... Aucune reproduction............................................................................................................................................................... 4 IV ..........................Fonctions d'agrégat........................................................... etc sans l'autorisation expresse de l'auteur............................Introduction.... Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts..................... images........3 III ...Autres fonctions.Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia) I ................................com/sgbdcmp/fonctions/ .........Fonctions numériques........................................5 V ...............Fadace...3 II ..... 7 -2Copyright © 2005 ...........................................................Fonctions temporelles............................ http://fadace......................................................... documents.......................................................

2) AS = DB2-400 (V5R3) MY = MySQL (4.ASE.. covar_pop.DB. Aucune reproduction.ASE. contraintes. rank.com/sgbdcmp/fonctions/ ..ASA.0) IN = Informix Si d'aventure vous vouliez enrichir cette page avec d'autres SGBDR.ASE.OR. lag.MS. count(montant ) from ecritures group by caisse Select max(montant) from . et certains chanceux ont des compétences complémentaires dans d'autres langues.Introduction Nous avons tous une langue maternelle.. ration_to_report. stddev_pop. corr. row_number.ASA. Select variance(montant) from..MY.AS.ASA.DB.AS. percentile_disc.MY SQL. Select var(montant) from. last_value. first.MY OR. Voici donc un petit comparatif qui vous permettra traduire plus aisément une fonction d'un SGBD à l'autre. var_samp Compatibilité SQL. var_pop. ne peut être faite de ce site et de l'ensemble de son contenu : textes. L'Esperanto en SGBDR est représenté par les diverses normes SQL.PG OR -3Copyright © 2005 . documents. La connaissance d'autes languages est alors plus aisée si l'on peut apprendre "par similitudes".AS.MS. Select stddev(montant) from.Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia) I . stddev_samp..lead.1) (merci à Maximilian) PG = PostgreSql (8.OR..DB.AS.DB.OR.MS.MS OR.ASA..MY SQL. n'hésitez pas à me faire parvenir votre matrice de correspondance. covar_samp. images.OR. http://fadace. procédures stockées). Select avg(montant) from .. percent_rank.AS. mais lorsque la pratique est là. cume_dist. les acronymes suivants ont été utilisés: • • • • • • • • • • 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. Il y a cependant des différences mineures qui créent des problèmes majeurs aux développeurs sensés passer d'un SGBDR à un autre : le language de chaque SGBDR qui diffère pour écrire les objets compilés (fonctions. last. la problématique est la même : on apprend un language avec une certaine peine.DB.DB.MY SQL.ntile. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.ASA.PG DB. II . first_value.MS.OR.AS.AS. même partielle. Pour la compatibilité. dense_rank. En informatique.. et les fonctions. c'est le language que l'on connaît généralement le mieux.MY SQL. Select min(montant) from .MS... sum(montant) from ecritures where annee=2005 group by caisse Select caisse.developpez. percentile_cont.Fonctions d'agrégat Action Somme des champs non nulls Nombre des champs non nulls Maximum Minimum Moyenne Ecart type Variance Autres fonctions analytiques Fonction Select caisse..Fadace. triggers.MY. etc sans l'autorisation expresse de l'auteur.

AS.MY OR.ASE.AS.MY MS OR.AS OR MS.ASA.Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia) III .AS.DB.OR.AS. 'xy'.ASE OR.Fadace.MY ASE MS MS.PG DB.OR.'X') replicate('X'.MS.PG MS.ASE.2) Transformation de translate('abcd'.DB2.ASE. 2.ASE. 'AB'.PG MS. ne peut être faite de ce site et de l'ensemble de son contenu : textes.DB.MY SQL.' ') Extraction d'une soussubstr(￿ABCDE'.MY.ASA.ASA SQL DB. documents. 'AB'.ASA.MY OR OR.IN. datalength('abcdef')-4) 'AB' Résultat '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.Fonctions sur chaînes de caractères Action Concaténation Fonction 'A' || 'B' concat('A'.MY DB.5.AS.DB.IN.AS.AS.AS MS.DB.MY DB. 'CD') locate('CD'.DB.com/sgbdcmp/fonctions/ . 3.OR.DB.MY.OR.ASE. 'ac'.'B') Remplacement d'une stuff('abcdef'.MY MS.1)+ 'ijklmn'+right('abcdef'.OR. 'CD') Mise en majuscules ucase('BonJour') upper('BonJour') Mise en minuscules lcase('BonJour') lower('BonJour') Remplissage à gauche lpad('A'.MS. 'xy') caractères translate('abcd'.ASE SQL.AS.AS.developpez.'B') Conversion en chaîne (var)char(89) to_char(89) convert(char(2).MY MS.AS.DB.DB.ASE OR.5.'X') 'A'+replicate('X'.ASA OR.MY SQL.ASE.MS.MY MS. str(89) cast(89 as char(2)) Transformation ASCII char(89) chr(89) ASCII('Y') Longueur d'une chaîne char[acter]_length('A ') length('A ') datalength('A ').MS.PG MS.OR.MY MS. 'ac') Remplacement d'une replace('ABC'.AS.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 phonétique soundex('Fabien') Génération d'espace space(5) lpad(''.MY SQL. même partielle.'B') chaîne str_replace('ABC'.MS. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.AS.ASE.ASA OR. len('A ') Position d'une sous-chaîne instr('ABCDE'.OR DB. etc sans l'autorisation expresse de l'auteur.MY SQL.ASE.DB.DB.MY SQL.AS. http://fadace.5)+'A' Remplissage à droite rpad('A'.MY MS.3.AS.ASE. 'ijklmn') chaîne par positionnement left('abcdef'.MY SQL.ASE. 'ABCD') patindex('%CD%'.AS.ASE.MY SQL.DB.ASE OR -4Copyright © 2005 .3.MS. images.AS.MY MS.'B') 'A' + 'B' concatenate ('A'.MY.AS.MS.5.AS.ASE OR SQL OR.2) chaîne substring(￿ABCDE'.OR. 'ABCD') position('ABCDE'.PG OR.DB. Aucune reproduction.MY.MY OR.OR. 89).

2005') MS.Fadace.2005') 'Mardi' AS. images.AS.2) Partie droite d'une chaîne right('ABCD'.ASA.ASE '2002/1/1') current_date '18/07/2005' SQL.2) substr('ABCD'.00.7. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. INTERVAL 2 MONTH)..OR.ASE date_format('19.7.AS.1.-1.02.. même partielle.DB current_time SQL.DB datename(d.2.2005'. AS.7. Aucune reproduction.7.AS.OR.AS to_timestamp('2002/1/1') OR convert(timestamp.1.convert(datetime. MY INTERVAL 30 DAY) DB.1)||'ijklmn'|| instr('abcdef'.IN OR ASE.2005'.) MY dateadd(M. month('19.3005' . .MY MS.2005') timestamp('2002/1/1') '2002-01-01-00.2006') days(date('1.AS.2) substring('ABCD'.0.MY ASE.ASA.ASA.MS.2005') 'Juillet' AS.2006') MY datediff('1.ASE time('01:00') '01:00:00' DB.2.000000' DB.1.Fonctions temporelles Action Conversion en date Ajout d'un intervalle à une date Retrait d'un interval à une date Différence 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 Résultat Compatibilité date('2002-01-02') '01/02/2002' AS.'01.MS.1996' OR. SQL.AS monthname('19.MY dateadd(D.ASA getdate() MS.IN.dateadd(M.OR.'19.2.2.2.2005') last_day('4.ASE '1.ASA adddate('01.IN str_to_date('2002-01-02'.1.-2. ne peut être faite de ce site et de l'ensemble de son contenu : textes.OR. '%W').1996')) MS.00.Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia) Renversement d'une chaîne Partie gauche d'une chaîne left('ABCD'.DB. now() MY today() IN current time '18:00:34' AS.2005') MS.1.MY -5Copyright © 2005 .MY current date DB.ASE dateadd.2005') '1 avr.2005'.DB datename(m.2005'))days(date('31.7.AS.DB '1.2005'.'1. MY '%M').2005'.MS. 2005 0:00' MS.12.OR '1.2) substr('ABCD'.'4.02.DB to_date('2002-01-02') OR cast('2002-01-02' as . '01.. etc sans l'autorisation expresse de l'auteur.MY.ASE date_sub('1. -4) reverse('ABCD') 'DCBA' 'AB' 'CD' ASE.7.ASE curdate().'4.2 month datediff(day.DB.02.'+datepart(M.'01.7. http://fadace. dayname('19.developpez. 2004 0:00' MS.02.DB.MY. MS.1.2005'.com/sgbdcmp/fonctions/ .'datepart(Y.1996') '29.) SQL.7.. 365 MS.-2) instr('abcdef'.1.ASE date_format('19.MS.1996'))+'.MS. '1.2005'+interval 2MONTH dateadd(M.2. documents.'19.IN.2.MY OR IV .2005')) dayname('19.2005') '1 dec.

7') cast(7.7.07. '19-7-2005') date_format('19-7-2005'.2) '26.303032' AS.MY MS.ASE year().7.MS.ASE MY AS. etc sans l'autorisation expresse de l'auteur. decimal) cast('45' as decimal) integer('7.DB. .1.DB. AS. même partielle.MY datepart(ms.2005'). '1.129') 129 AS.AS.MY AS.ASE MY Jour de la semaine Jour de l'année V .2005'.DB.'02:03:04. '1. month()..developpez.7.1.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 2ème jour de la semaine No de la semaine getdate() MS.2005' OR week('19-7-2005') 30 datepart(ww. '%j') AS.'1.2005 05:04:03'.com/sgbdcmp/fonctions/ .ASE 05:04:03') OR.2005 MY 05:04:03') date_format('1.2005'.2005'.7.DB.1.ASE curtime() MY CURRENT_TIMESTAMP MS now().MS getdate() SQL. '19. day().7.129'.MY datepart(hh..30.AS MS.2005'.2005 MS.6 as integer) 45 Résultat Compatibilité DB..ASE OR MY Conversion en entier 7 7 8 8 -6Copyright © 2005 .DB.DB. '45') to_number('45') convert('45'.MY datepart(q. second() AS.1.2005') 200 datediff(d.6 as integer) cast(7.2005') MS.ASE MY OR AS. '%V') to_number(to_char(to_date('19.2005') 3 AS.7. minutes().MY MS.Fonctions numériques Action Conversion en décimal Fonction decimal('45') convert(dec(9.DB current_timestamp OR.MY extract(hour from '1.7. MY '%f') quarter('1.7. Aucune reproduction. '%w') dayofyear('19.2005') 3 datepart(w.7.Fadace.2005') 2 date_format('19.2).ASE getutcdate().MY MS.MY hour().ASE date_format('02:03:04.DB. current timestamp '2005-07-18-18.29. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. +02:00 OR datediff(hh. images.DB.'IW')) dayofweek('19. '%h') next_day('19.'19.MS. ne peut être faite de ce site et de l'ensemble de son contenu : textes. 2 MS.getdate()) microsecond('02:03:04.ASE current_timestamp() MY current() IN current timezone 20000 AS current_timestamp .ASE OR MY MS.2005')+1 date_format('19.DB AS..129') MS. http://fadace.07. documents.

MY DB.MS.AS.123).333333.1) atan2(.AS.DB. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. cos(.MY OR.SQL. .576.OR.4) 4 ceil(3.developpez. 3.AS.1) cot(.MY OR.56.DB...MY OR.7) 1 50 % 7 PI pi() 3.3) greatest(5. cosh(.DB..56).59 truncate(3.1).OR. acos(.MY OR.9.DB.DB.ASE.599.'. Élévation à la puissance power(2.) abs(-3.4) 16 Valeur aléatoire rand(1) .MY AS.ASE.1415.PG.10) Modulo mod(50.MY DB.Autres fonctions Action Fonction Résultat n premières lignes d'un set SELECT * FROM A 10 premières lignes WHERE RRN(A) < 10 SELECT * FROM A FETCH FIRST 10 ROWS ONLY SELECT TOP 10 * FROM A AS DB MS.DB.AS MS.MS.DB.MS.MY DB.'') Conversion en digits sur 10 digits(123) 0000000356 positions RIGHT('0000000000'+convert(varchar(10).AS. etc sans l'autorisation expresse de l'auteur.'.AS.AS.ASE. ASA.3.57 Signe d'un nombre sign(-7) -1 Racine carrée sqrt(16) 4 Troncature sans arrondi trunc(3.DB.2) 4.599.com/sgbdcmp/fonctions/ .AS.AS.AS.0/3) cast(1/0.DB.1) sinh(. (str_replace(convert(varchar(30).2) Logarithme népérien ln(1) 0 LOG2() Logarithme en base 10 log(1) 0 log10(1) log(1.'')) as int) replace(3.MS.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.MY MS. .OR.. tan(.3 Conversion en degrés degrees(1) 57. Aucune reproduction.AS.ASE.MY OR.MS.MS.AS. ASE.ASE.MY VI .OR.MS. documents.ASE.MY OR OR.DB.1).DB.MY OR.ASE..2) 3.-10) Exponentiel exp(2) 7.1). 1/0.MY MS.ASE.DB ASE MS OR AS.''))) cast((replace(cast ( 3.MY OR..3 as float) convert(float.OR.1).'.AS..29 Conversion en digits (sans digits(3.DB.MY OR.MS.2) 4.MY MS.56 as varchar(30)).ASE.6 as signed/ unsigned) float(1..ASA OR MY Compatibilité -7Copyright © 2005 ...MY DB.ASE OR MS.ASE.AS.1 9 5 3. atan(.AS MY MS. asin(.AS. ne peut être faite de ce site et de l'ensemble de son contenu : textes.OR MS.56) 365 décimales) convert(int.OR.'.AS MS.1).AS.1).ASE OR.4) Trigonométrie sin(.DB MS.AS.9.ASE.389 Arrondi supérieur ceiling(3. tanh(.MY MS.574. http://fadace.DB.. même partielle. Arrondi round(4.) least(5.1) .DB.10) substr('0000000000'|| 123 ).MY MS.ASE.MY AS.MY DB. images.'.DB.3) 0..Fadace.ASE.OR.'.ASE.58 round(4..2) AS AS.

même partielle.IN.MY SQL.ASE.MY OR ASE MS SQL.MY OR.0) NULLIF(NULL.. 0. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.ASE.MS.'F') Value ('M'.AS.DB. etc sans l'autorisation expresse de l'auteur.MS. ne peut être faite de ce site et de l'ensemble de son contenu : textes.'F') case 'M' when 'M' then 'H' else 'F' end coalesce(Null.DB OR 0 'Utilisateur' 'Login' 'Login système' -8Copyright © 2005 .DB.AS.'M'.0) current_user User user_name() user_sname() session_user suser_name() suser_sname() user() System_user Userenv 'H' OR DB..ASA.DB.developpez.AS.ASA.MS.ASE OR.com/sgbdcmp/fonctions/ .) isnull(NULL.MS SQL. Aucune reproduction.AS SQL.Correspondance des fonctions des divers SGBDR par fadace (Fabien Celaia) Fonction conditionnelle 1ère valeur non nulle Utilisateur courant Utilisateur de la session Utilisateur système SELECT * FROM A WHERE ROWNUM < 10 SELECT * FROM A LIMIT 0.OR.'H'.0) Nvl(NULL. . images.DB.'M'.ASA.DB.MS.10 decode('M'.'H'.MY ASE MS MY SQL. http://fadace.MS.ASA.IN SQL.ASE.Fadace.MS.OR. documents.