SQL : Equivalences entre Oracle et MySQL |
Quelques fonctions de bases. |
|
 |
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 :
|
|