How to fix MySQL 'Truncated incorrect DOUBLE value' error
背景: 执行mysql语句报错, Truncated incorrect DOUBLE value.
这是个非常奇怪的报错.因为实际错误和提示的并没啥关系,所以你很容易懵了,被提示误导.
这个错误经常是发生在UPDATE
语句中
原因1: 你将一个不能用数字表示的字符串与数字比较在where语句中. 原因是和数字比价时,mysql会字符串先转换为数字,转的时候出错就会报这个错. 如下
UPDATE students SET score = 5 WHERE student_id = 87463298107;//student_id为字符串类型,存的值有数字或者英文字母, 所以当比到包含英文字母的行时就会出错
解决方法: 字段什么类型就和什么类型值比较.改后如下
UPDATE students SET score = 5 WHERE student_id = '87463298107';
有趣的是,同样的where从句放在select语句中,能执行并不会报错.
还有种错误是语法错误
UPDATE students SET name = 'Sarah' AND score = 9 WHERE id = '1';
会报错
ERROR 1292 (22007): Truncated incorrect DOUBLE value: 'Sarah'
. 你可能会被误导是Sarah值是不是有什么问题.然而其实和他并没关系.
实际错误是语法错误, update多个值不是用and连接而是要将and替换成,
.如下UPDATE students SET name = 'Sarah', score = 9 WHERE id = '1';
ref: https://sebhastian.com/mysql-truncated-incorrect-double-value/