问题出现情景:数据库替换,公司要用Doris替换原本的ClickHouse数据库。但是发现调度任务执行批量插入数据时,CK和doris数据库执行插入SQL后结果不一致,CK会对数值类型字段插入空值时补0,但是doris不会,这导致了数据不一致,业务产生了影响。
简单举例描述一下SQL的情况:A表和B表左关联查询,A表比B表数据全,关联查询中查询B表的字段会因为左关联的原因查询的数字类型的字段为空的情况。此时,把查询的数据用insert into语句入库,在CK表中,数字类型的字段空值会自动改为0,但是在doris表中空值还是空值,即使我建表的时候把该字段设置默认值为0,但是插入空值结果还是空值。
doris尝试设置默认值无效后,尝试在SQL的角度上进行处理。于是我在插入SQL的select部分添加了ifnull(x,0)函数,这个时候出现了新的问题,加了函数后我执行select的查询语句确实空值成功显示为0,但是我执行insert into () select ()...插入语句后发现,插入的还是空值,并不是0。
求助朋友们帮忙看下原因,给出个解决思路,感谢。