[Err] 1292 - Truncated incorrect DOUBLE value: ‘null‘

出现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就行了。

经验分享 程序员 微信小程序 职场和发展