SQL CAST()

La fonction CAST() dans le langage SQL est une fonction de transtypage qui permet de convertir une données d’un type en un autre. Il est par exemple possible de transformer une date au format DATETIME en DATE, ou l’inverse.

Syntaxe

La syntaxe de la fonction CAST est la suivante :

SELECT CAST( expression AS type );

Dans cette syntaxe, « expression » correspond à la valeur a transformer, tandis que « type » contient le type de données que l’ont souhaite obtenir. Ce type de données peut être l’une des valeurs suivantes (dépend du système de gestion de base de données) :

  • BINARY
  • CHAR
  • DATE
  • DATETIME
  • TIME

Exemple

Pour le bien de ce tutoriel nous allons imaginer une base de données qui contient une table des clients avec leur prénom, leur nom, la date d’ajout du client (au format DATETIME) et également le budget du client.

Table client :

idprenomnomdate_ajoutbudget
1ThierryJourdain2013-02-05 14:11:09314.21
2LauretteBertin2013-03-15 15:06:45154.34
3AndréMoreira2013-08-26 08:24:39255.47
4AurélieMoulin2013-09-04 11:36:17147.95

Dans cette table, les types des colonnes sont les suivants :

  • id : BIGINT
  • prenom : VARCHAR
  • nom : VARCHAR
  • date_ajout : DATETIME
  • budget : FLOAT

Extraire la date au format DATE

Il est possible de récupérer la date d’ajout du client au format DATE pour ne garder que l’année, le mois et le jour. Cela permet donc d’ignorer l’heure pour ne conserver qu’un jour.

SELECT id, prenom, nom, CAST( date_ajout AS DATE ) AS date_ajout_cast, budget 
FROM client

Résultat :

idprenomnomdate_ajout_castbudget
1ThierryJourdain2013-02-05314.21
2LauretteBertin2013-03-15154.34
3AndréMoreira2013-08-26255.47
4AurélieMoulin2013-09-04147.95

Extraire le budget au format INTEGER

Grâce à la fonction CAST() il est également possible de convertir un nombre à virgule en nombre entier. La colonne « budget » est initialement de type FLOAT mais il est possible d’utiliser CAST pour convertir son type en un INTEGER.

SELECT id, prenom, nom, date_ajout, CAST( budget AS SIGNED INTEGER ) AS budget_cast
FROM client

A savoir : cette requête fonctionne avec MySQL. Ce dernier doit spécifier si le type INTEGER doit être signé ou non (SIGNED ou UNSIGNED). D’autres systèmes de gestion de base de données n’ont pas nécessairement besoin de préciser cela.

Résultat :

idprenomnomdate_ajoutbudget_cast
1ThierryJourdain2013-02-05 14:11:09314
2LauretteBertin2013-03-15 15:06:45154
3AndréMoreira2013-08-26 08:24:39255
4AurélieMoulin2013-09-04 11:36:17148
Partager