Table des matières

Combien d'entre-nous se sont un jour retrouvés le bec dans l'eau à la suite d'un changement de base ? Il faut dans les 3/4 du temps réécrire les requêtes, mais connaissez-vous les équivalences entre les principales bases ?


De quelles bases va-t-on parler ?


J'ai fait le choix de comparer dans un premier temps Oracle et MySQL car je connais bien ces deux environnements, je rajouterai TSQL, regroupant SQLServer et DB2, dans le futur, le temps pour moi d'en connaître un peu plus.
Nous allons donc comparer par groupe d'instructions les équivalences entre chaque langage.

Les opérateurs de manipulation de chaînes.


Oracle MySQL
Concaténation chaîne1 || chaîne2 || … concat(chaîne1, chaîne2, …)
Longueur length(chaîne)
Partie gauche substr(chaîne, 1, n_caracteres) left(chaîne, n_caracteres)
Portion d'une chaîne substr(chaîne, debut, n_caracteres) substring(chaîne, debut, n_caracteres)
Partie droite substr(chaîne, length(chaîne) - n_caracteres) right(chaîne, n_caracteres)
Remplacement de chaîne replace(chaine, recherche, remplace)
Retrait des espaces à gauche ltrim(chaîne)
Retrait des espaces à droite rtrim(chaîne)
Retrait des espaces à gauche et à droite trim(chaîne)
Remplissage à gauche lpad(chaîne, caractère, longueur)
Remplissage à droite rpad(chaîne, caractère, longueur)
Mise en majuscule upper(chaîne) upper(chaîne) ou
ucase(chaine)
Mise en minuscule lower(chaîne) lower(chaîne) ou
lcase(chaine)


Manipulation de dates


Oracle MySQL
Date système sysdate now()
Ajouter n jours à une date date + n dateadd(date, n)
Retirer n jours à une date date - n datesub(date, n)
Différence entre 2 dates (jours) date1 - date2 datediff(date1, date2)
Extraire le jour d'une date to_char(date, “dd”) day(date)
Extraire le mois d'une date to_char(date, “mm”) month(date)
Extraire l'année d'une date to_char(date, “yyyy”) year(date)
Extraire la semaine d'une date to_char(date, “ww”) week(date)
Extraire la semaine d'une date to_char(date, “ww”) week(date)
Extraire l'heure to_char(date, “hh”) hour(time)
Extraire les minutes to_char(date, “nn”) minute(time)
Extraire les secondes to_char(date, “ss”) second(time)


Les conversions


Oracle MySQL
Nombre → String to_char(nombre) cast(nombre as char)
String → Nombre to_number(string) cast(string as int)
String → Date to_date(string, “format”)
ex: to_date(“20030712”, “yyyymmdd”)
str_to_date(string, “format”)
ex: str_to_date(“20030712”, ”%Y%m%d”)
Date→ String to_char(date, “format”)
ex: to_char(sysdate, “yyyymmdd”)
date_format(date,”format”)
ex: date_format(now(), ”%Y%m%d”)


En résumé


On voit très bien au travers de ces 3 tableaux que Oracle et MySql n'utilise pas les mêmes instructions, le même vocabulaire. Mais, à quelques exceptions près, supporte tous les deux l'intégralité du standard SQL92. Pensez donc à utiliser les instructions communes le plus souvent possible.

Références


Vous trouvez les documentations de ces bases en suivant les liens suivants :

Source / Auteur

http://www.asp-php.net/tutorial/asp-php/equivalences_sql.php
auteur : sebmafate