数据库
首页 > 数据库> > MySQL中奇怪的转换行为

MySQL中奇怪的转换行为

作者:互联网

这是代码

mysql> SELECT id FROM tbl WHERE id = '1h';
+----+
| id |
+----+
|  1 |
+----+
1 row in set

确实有一个ID为1的字段(而不是“ 1h”).
这是从MySQL文档中摘录的:http://dev.mysql.com/doc/refman/5.1/en/type-conversion.html

mysql> SELECT 1 > '6x';
    -> 0
mysql> SELECT 7 > '6x';
    -> 1

可以这么说,此错误已记录在案.问题是这种行为的原因是什么,以及如何纠正它以使其不使用char符号转换字符串?我可以像

mysql> SELECT id FROM tbl WHERE cast(`id`, BINARY) = '1h';

但我不太喜欢这种变体

解决方法:

这不是错误.

解决方案是不使用条件字符串值查询数字列.

永远不要依赖隐式类型转换.

标签:casting,implicit-cast,string,mysql
来源: https://codeday.me/bug/20191201/2078246.html