SQL CONVERT() (MySQL et SQL Server)

La fonction SQL CONVERT(), dans les systèmes MySQL et SQL Server, permet de convertir une donnée d’un type en un autre, de façon semblable à CAST(). La fonction permet par exemple de convertir une données de type FLOAT en INTEGER ou un DATE en DATETIME.

Attention : avec les Système de Gestion de Base de Donnée (SGBD) PostgreSQL et Oracle, la fonction CONVERT() permet de convertir une chaîne de caractère d’un encodage en un autre, tel qu’une conversion de UTF-8 à Latin-1 (ISO-8859-1).

Syntaxe

MySQL

La fonction peut s’utiliser dans une requête SQL en respectant la syntaxe suivante :

CONVERT(expression, type);

Le paramètre “expression” correspond à la donnée qui doit subir le transtypage. Le type de données peut être BINARY, CHAR, DATE, DATETIME, INTEGER ou TIME.

SQL Server

La même fonction s’utilise différemment avec SQL Server. La syntaxe est la suivante :

CONVERT ( type, expression );

Le paramètre “expression” correspond également à la donnée qui doit changer de type. Le type quand à lui peut contenir plus de possibilité, allant du type BINARY à TEXT, en passant par CHAR, VARCHAR, DATETIME, TIMESTAMP et bien d’autres.

Les possibilités de conversion sont résumées dans le tableau ci-dessous :

SQL Server : transtypage de données avec la fonction CONVERT()

SQL Server : transtypage de données avec la fonction CONVERT()

Source : http://msdn.microsoft.com/fr-fr/library/ms187928.aspx

Exemple

MySQL

Les requêtes SQL suivantes sont des exemples concret de conversion de type de données avec MySQL :

SELECT CONVERT(52.2, SIGNED INTEGER); -- résultat : 52
SELECT CONVERT(52.5, SIGNED INTEGER); -- résultat : 53
SELECT CONVERT(52.6, SIGNED INTEGER); -- résultat : 53
SELECT CONVERT(-52.6, SIGNED INTEGER); -- résultat : -53
SELECT CONVERT(52.2, UNSIGNED INTEGER); -- résultat : 52
SELECT CONVERT(52.5, UNSIGNED INTEGER); -- résultat : 53
SELECT CONVERT(52.6, UNSIGNED INTEGER); -- résultat : 53
SELECT CONVERT(-52.6, UNSIGNED INTEGER); -- résultat : 0
SELECT CONVERT('2014-11-01', DATETIME); -- résultat : 2014-11-01 00:00:00

SQL Server

Les requêtes ci-dessous représente le fonctionnement de la fonction avec SQL Server :

SELECT CONVERT(int, 52.79); -- résultat : 52
SELECT CONVERT(float, 52.79); -- résultat : 52.79
SELECT CONVERT(varchar, 63.3); -- résultat : '63.3'
SELECT CONVERT(varchar(4), 63.3); -- résultat : '63.3'
SELECT CONVERT(float, '63.3'); -- résultat : 63.3
SELECT CONVERT(datetime, '2014-11-01'); -- résultat : '2014-11-01 00:00:00.000'
SELECT CONVERT(varchar, '01/11/2014', 101); -- résultat : '01/11/2014'

En savoir plus

Partager