通常情况下,mysql的数据类型检查不是很严格,比如以下的SQL语句:
select user_id,user_name from t_user where user_id=100;
此时,尽管user_id一列是VARCHAR类型,但上述语句仍能正常运行。
然而,在将查询结果存储为表格时,如果还这么写,就会报错,例如:
create table temp_t as select user_id,user_name from t_user where user_id=100;
此时,如果user_id一列为VARCHAR类型,而100没有加引号,就会出现如下提示:
ERROR 1292 (22007): Truncated incorrect DOUBLE value: '(null)'
发现这个问题,是因为我的查询结果中就没有DOUBLE类型,查询就正常显示,将查询结果保存为表时就会报错。后来发现不带条件就正常,带了条件就报错,最后把问题放在条件user_id=100上,想到唯一的问题就是100没有加单引号,加上了单引号后,一切正常。