sql - hive NULL 和 字符串比较问题请教?

查看:482
本文介绍了sql - hive NULL 和 字符串比较问题请教?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

比如hive仓库里面有一个表 test,字段是 id name date,里面有两条记录
1 lisi 2017-08-16 18:00:00
2 wangwu NULL

执行一个sql select count(*) from test where date <= '2017-08-16 18:00:00'; 返回的是1还是2呢?

为什么?

解决方案

返回的应该是1,因为null和字符串比较结果是null,第二记录就被滤掉了,这里count(*)就是计算的过滤后的记录总数。
实际上count只有两种基本形式
1、count(*) 所有检索到的记录(即过滤后),包括null的记录
比如 select count(*) from test 得到的记过就是2
2、count(expr) 这里对每条记录计算expr的值,当expr结果为null时,记录被滤掉
所以 select count(date) from test 结果是1
而有些人喜欢用的select count(1) from test 结果是2,因为每条记录计算出来的expr值都是1,所以相当于count(*)。
另外这种形式甚至可以把expr写成case when的形式,这里就不多写了。

这篇关于sql - hive NULL 和 字符串比较问题请教?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆