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 :
id | prenom | nom | date_ajout | budget |
---|---|---|---|---|
1 | Thierry | Jourdain | 2013-02-05 14:11:09 | 314.21 |
2 | Laurette | Bertin | 2013-03-15 15:06:45 | 154.34 |
3 | André | Moreira | 2013-08-26 08:24:39 | 255.47 |
4 | Aurélie | Moulin | 2013-09-04 11:36:17 | 147.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 :
id | prenom | nom | date_ajout_cast | budget |
---|---|---|---|---|
1 | Thierry | Jourdain | 2013-02-05 | 314.21 |
2 | Laurette | Bertin | 2013-03-15 | 154.34 |
3 | André | Moreira | 2013-08-26 | 255.47 |
4 | Aurélie | Moulin | 2013-09-04 | 147.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 :
id | prenom | nom | date_ajout | budget_cast |
---|---|---|---|---|
1 | Thierry | Jourdain | 2013-02-05 14:11:09 | 314 |
2 | Laurette | Bertin | 2013-03-15 15:06:45 | 154 |
3 | André | Moreira | 2013-08-26 08:24:39 | 255 |
4 | Aurélie | Moulin | 2013-09-04 11:36:17 | 148 |