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