前言:
最近在弄sql的一些工作用到了IF函数,其中发现了一个坑,但是这个坑估计大多数都不会遇到,因为我在本地使用一点问题都没有,然后我放到数据中台做为编写任务接口的时候才出现的问题,明明源表和目标表都没有double类型的字段,但是报错就是提示有这个类型的字段,当时搞了好久。
原因:
IF()函数的隐性转换导致的字符串格式不一致,if函数的第一个参数是做条件判断的,会转换为float类型 所以我的问题就是这样
解决办法:
// if()改用case when替代,或者判断值写成表达式,如:
// 将
IF( province, '中国', '中国' ) AS 'COL_PARENT'
// 改为
CASE province WHEN province THEN '中国' END AS 'COL_PARENT'
完事跑路!