出现Truncated incorrect DOUBLE value: ‘null‘这个错误,在网上找了一些资料,基本是说语法不正确,例如修改数据的时候多个字段中间用的and,而不是用的逗号等,最终未能在网上获取答案,最后一步一步分析发现是因为字段类型转换出错导致。
写SQL语句的时候一定要注意原字段的类型,否则可能出现一些意想不到的错误
具体信息如下:
[SQL]INSERT INTO y_gis0000_lin (
gid,
stnod
) SELECT
gid,
IF (stnod = 'null', NULL, stnod) as stnod
FROM
temp_y_gis0000_lin
[Err] 1292 - Truncated incorrect DOUBLE value: 'null'
分析:
SELECT
gid,
IF (stnod = 'null', NULL, stnod) as stnod
FROM
temp_y_gis0000_lin
正常
insert into y_gis0000_lin(gid,stnod) select 1,if(1=1, null,2)
正常
怀疑y_gis0000_lin#stnod字段类型不正确,经检查字段类型为int,字段正常,接着怀疑temp_y_gis0000_lin#stnode字段,发现该字段为int类型
当执行jinsert into table select xxx from xxx会报错,爆粗的原因是stnod='null'时,会对字段进行转换,int转varchar,导致语句报错,将temp_y_gis000_lin的stnod字段类型改为varchar就行了。