CAST(expr AS type),
          CONVERT(expr,type), CONVERT(expr
          USING transcoding_name)
          
          
        
          Les fonctions CAST() et
          CONVERT() peuvent être utilisées pour
          convertir une donnée d'un type en un autre. Leurs syntaxes
          sont :
        
          La valeur de type peut être l'une des
          suivantes :
        
              BINARY
            
              CHAR
            
              DATE
            
              DATETIME
            
              SIGNED {INTEGER}
            
              TIME
            
              UNSIGNED {INTEGER}
            
          CAST() et CONVERT() sont
          disponibles depuis MySQL 4.0.2. La conversion de type
          CHAR est disponible depuis la version
          4.0.6. La forme USING de
          CONVERT() est disponible depuis la version
          4.1.0.
        
          CAST() et CONVERT(... USING
          ...) sont des syntaxes SQL-99. La forme sans
          USING de CONVERT() est
          une syntaxe ODBC.
        
          CONVERT() avec la clause
          USING sert à convertir des données entre
          différent jeux de caractères. Avec MySQL, les noms
          d'encodage sont les mêmes que les noms des jeux de
          caractères. Par exemple, cette commande converti la chaîne
          'abc' depuis le jeu de caractères par
          défaut du serveur vers utf8 :
        
SELECT CONVERT('abc' USING utf8);
      La fonction de transtypage est très pratique lorsque vous voulez
      créer une colonne avec un type spécifique dans une requête
      CREATE ... SELECT :
    
CREATE TABLE nouvelle_table SELECT CAST('2000-01-01' AS DATE);
      Les fonctions peuvent aussi être utilisée pour trier des
      colonnes de type ENUM en ordre lexical.
      Normalement, le tri sur les colonnes ENUM est
      fait avec les valeurs numériques internes. Pour trier les valeurs
      avec l'ordre lexical CHAR :
    
SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);
      CAST(string AS BINARY) est l'équivalent de
      BINARY string. CAST(expr AS
      CHAR) traite l'expression comme une chaîne, avec le jeu
      de caractères par défaut.
    
      Note : en MySQL 4.0 le
      CAST() en DATE,
      DATETIME ou TIME ne fait que
      marquer la colonne comme étant du type indiqué, mais n'en change
      pas la valeur.
    
En MySQL 4.1.0, la valeur est convertie dans le type de colonne demandé, puis il est envoyé à l'utilisateur. Cette fonctionnalité est une nouveauté du protocole 4.1, qui envoie les données au client :
mysql> SELECT CAST(NOW() AS DATE);
       -> 2003-05-26
      Dans les prochaines versions de MySQL (probablement 4.1.2 ou 5.0)
      nous allons corriger CAST pour qu'elle modifie
      le résultat si vous l'utilisez comme une partie d'une expression
      plus complexe, comme CONCAT("Date: ",CAST(NOW() AS
      DATE)).
    
      N'utilisez pas CAST() pour extraire des
      données dans différents formats, mais utilisez plutôt
      LEFT ou EXTRACT(). See
      Section 12.5, « Fonctions de dates et d'heures ».
    
Pour transformer une chaîne de caractères en une valeur numérique, vous ne devez rien faire de particulier ; juste utiliser la valeur de la chaîne en lieu et place de la valeur numérique :
mysql> SELECT 1+'1';
       -> 2
Si vous utilisez un nombre dans un contexte de chaîne, le nombre sera automatiquement converti en une chaîne binaire.
mysql> SELECT concat("salut toi ",2);
       ->  "salut toi 2"
      Si vous utilisez un nombre dans un contexte de chaîne, le nombre
      sera automatiquement converti en chaîne binaire
      (BINARY).
    
mysql> SELECT CONCAT("Salut vous ",2);
       ->  "Salut vous 2"
      MySQL supporte l'arithmétique avec les valeurs 64 bits signées
      et non signées. Si vous utilisez une opération numérique (comme
      le signe +) et qu'un des opérandes est de type
      unsigned integer, alors, le résultat sera une
      valeur non signé. Vous pouvez corriger cela en utilisant les
      opérateurs de transtypages SIGNED et
      UNSIGNED, qui transformeront l'opération
      respectivement en un entier signé sur 64 bits et un entier non
      signé sur 64 bits.
    
mysql>SELECT CAST(1-2 AS UNSIGNED)-> 18446744073709551615 mysql>SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED);-> -1
      Notez que si l'une ou l'autre opération est une valeur à virgule
      flottante (Dans ce contexte, DECIMAL() est
      considéré comme une valeur à virgule flottante) le résultat
      devrait être une valeur à virgule flottante et ne sera pas
      affecté par la règle ci-dessus.
    
mysql> SELECT CAST(1 AS UNSIGNED) -2.0
        -> -1.0
Si vous utilisez une chaîne dans une opération arithmétique, elle sera converti en un nombre à virgule flottante.
      Les fonctions CAST() et
      CONVERT() ont été ajoutées dans la version
      4.0.2 de MySQL.
    
      L'affichage des valeurs non signées a été modifié dans la
      version 4.0 de MySQL pour pouvoir supporter correctement les
      valeurs de type BIGINT. Si vous voulez utiliser
      du code fonctionnant dans la version 4.0 et la version 3.23 de
      MySQL (dans ce cas, vous ne pouvez probablement pas utiliser les
      fonctions de transtypage), vous pouvez utiliser l'astuce suivante
      pour avoir un résultat signé lorsque vous soustrayez deux
      colonnes d'entier non signé :
    
SELECT (unsigned_column_1+0.0)-(unsigned_column_2+0.0);
L'idée est que les colonnes sont convertis en un point mobile avant de faire la soustraction.
      Si vous rencontrez un problème avec les colonnes
      UNSIGNED dans vos anciennes applications MySQL
      lorsque vous effectuez le port sous la version 4.0 de MySQL , vous
      pouvez utiliser l'option
      --sql-mode=NO_UNSIGNED_SUBTRACTION lorsque vous
      lancez mysqld. Notez cependant qu'aussi
      longtemps que vous employez ceci, vous ne serez pas capable
      d'utiliser efficacement les colonnes de type UNSIGNED
      BIGINT.
    
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

