1、Mysql
在mysql中,比较两个值是否相等,可以直接使用“=”运算符:
#执行语句
select 1=1;
#运行结果
1
#执行语句
select 1=0;
#运行结果
0
可以看出,在使用“=”运算符进行判断时,如果两者相等则返回1,不相等则返回0
但是在判断两个null值时,结果却不是预期的
#执行语句
select 1=null
#执行结果
null
#执行语句
select null=null
#执行结果
null
可以看出,在使用null进行判断时,操作数一个为null返回null,而相等的两个null也返回null
可以使用“<=>"运算符进行null值的判断
对于”<=>"值的解释是:
NULL-safe equal. This operator performs an equality comparison like the=operator, but returns1rather thanNULLif both operands areNULL, and0rather thanNULLif one operand isNULL.The
<=>operator is equivalent to the standard SQLIS NOT DISTINCT FROMoperator.
简单说,如果两个 操作数都为null,则返回1,如果两个操作数只有一个为null,则返回0
#执行语句
select null<=>1;
#运行结果
0;
#执行语句
select null<=>null
#运行结果
1;
2、hive
在hive中,对于一般情况的相等判断,和MySQL相同,不过hive返回的是true或者false,而不是0或1,而对于null判断,和MySQL完全相同,操作数一个为null返回null,而相等的两个null也返回null

使用“<=>"运算符,如果两个 操作数都为null,则返回true,如果两个操作数只有一个为null,则返回false

本文探讨了MySQL和Hive在比较操作中的行为,特别是关于NULL值的处理。在MySQL中,使用'='运算符判断NULL会返回NULL,而'<>='运算符提供了一个NULL-safe的比较方式,当两个NULL值相等时返回1。在Hive中,情况类似,但返回结果是true或false。总结了两种数据库在NULL判断上的异同,对于数据处理和查询优化具有指导意义。
548

被折叠的 条评论
为什么被折叠?



