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 returns1
rather thanNULL
if both operands areNULL
, and0
rather thanNULL
if one operand isNULL
.The
<=>
operator is equivalent to the standard SQLIS NOT DISTINCT FROM
operator.
简单说,如果两个 操作数都为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