关于mysql的IF函数,报错:1292 - Truncated incorrect DOUBLE value: 'XXX'

408 阅读1分钟

前言:

最近在弄sql的一些工作用到了IF函数,其中发现了一个坑,但是这个坑估计大多数都不会遇到,因为我在本地使用一点问题都没有,然后我放到数据中台做为编写任务接口的时候才出现的问题,明明源表和目标表都没有double类型的字段,但是报错就是提示有这个类型的字段,当时搞了好久。 报错图片

原因:

IF()函数的隐性转换导致的字符串格式不一致,if函数的第一个参数是做条件判断的,会转换为float类型 所以我的问题就是这样

解决办法:

 //  if()改用case when替代,或者判断值写成表达式,如:
 // 将
IF( province, '中国', '中国' ) AS 'COL_PARENT' 
// 改为
CASE province WHEN province THEN '中国' END AS 'COL_PARENT'

完事跑路!