概述
我们平常写SQL中遇到过滤空值或者NULL值的处理,尤其是在非关系型数据库中没有唯一键和默认值的约束要求,很容易出现NULL值或者空值。很多时候我们总是会出现困扰,到底是该使用=' ' 还是用 is NULL呢?
另外我们一个多表JOIN的时候在这个SQL上跑的好好的,一旦换了一个SQL执行引擎就提示我们JOIN两边的数据类型不一致,这些都是为什么呢?
今天就带大家一起领略一下各类SQL中空值以及类型转换那些坑。
空值和NULL值
一、底层字段类型为字符型(string,varchar,char):
hive:如果底层存储的是NULL值,我们必须要用 is NULL来判断,如果底层存储的是' ',则需要使用 =' '来判断。在hive中NULL默认存储为'N',' '存储还是' '。
presto:与hive保持一致。
spark:与hive保持一致。
impala:与hive保持一致。
mysql:使用上与hive使用保持一致。
二、底层字段是(int,bigint)
hive:由于int类型的数据在hive中默认存储为'N',所以查询的时候必须要使用is NULL才能取出空的值。
presto:与hive
最后
以上就是冷静蜡烛为你收集整理的db2 null转0_SQL中的NULL值、空值以及类型转换那些事的全部内容,希望文章能够帮你解决db2 null转0_SQL中的NULL值、空值以及类型转换那些事所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复