Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment éviter la conversion implicite de MySQL (valeur DOUBLE incorrecte tronquée)

Vous devriez plutôt essayer de le caster explicitement en utilisant CAST ou CONVERT fonctionnent comme ci-dessous et ne comptez pas sur le casting implicite.

SELECT * FROM test WHERE sample_col = cast('foo' as int);

(OR)

SELECT * FROM test WHERE cast(sample_col as varchar) = 'foo';

De plus, cela ne sert à rien de comparer un INT colonne de type avec string value et AFAIK, il n'y a pas de tel paramètre pour arrêter la diffusion implicite. si vous voulez vraiment générer une erreur plutôt que de la convertir en 0, transmettez-la explicitement; dans ce cas, une erreur sortira.

Voir Conversion de type dans l'évaluation d'expression Pour plus d'informations.