Services webmasters
Partenaires
Jeux concours gratuits
 
Fonctions de dates et d'heures
<<<
Fonctions de transtypage Autres fonctions
>>>

6.3 Fonctions à utiliser dans les clauses SELECT et WHERE
6 Référence du langage MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Opérateurs et fonctions tout-types
Fonctions de chaînes de caractères
Fonctions numériques
Fonctions de dates et d'heures
->Fonctions de transtypage
Autres fonctions
Fonctions avec la clause GROUP BY

6.3.5 Fonctions de transtypage

La syntaxe de la fonction CAST est :


CAST(expression AS type)

ou

CONVERT(expression,type)
Où type est l'un des suivants :
  • BINARY
  • DATE
  • DATETIME
  • SIGNED {INTEGER}
  • TIME
  • UNSIGNED {INTEGER}
CAST() est la syntaxe ANSI SQL99 et CONVERT() est la syntaxe ODBC.

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);
CAST(chaîne AS BINARY est l'équivalent de BINARY chaîne .

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"

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.

Le rendu 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 .

<< Fonctions de transtypage >>
Fonctions de dates et d'heures Fonctions à utiliser dans les clauses SELECT et WHERE Autres fonctions
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -