Hive Sql空值陷阱——空值、NULL、不等于判断问题

  • 时间:2025-11-21 22:41 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:今天使用hive查询数据时,在对字段进行条件过滤时,遇到了一个问题。是这样的,表中有个字段数据类型为string,里面存放的值有数字,null(空值),‘’(空串),在对字段进行条件过滤时,结果并不是我期望的。目前进行简单地总结下:数据准备:create table test.tb_user as select '1' as user_id, 'aikaif

今天使用hive查询数据时,在对字段进行条件过滤时,遇到了一个问题。

是这样的,表中有个字段数据类型为string,里面存放的值有数字,null(空值),‘’(空串),在对字段进行条件过滤时,结果并不是我期望的。

目前进行简单地总结下:

数据准备:

create table test.tb_user as 
select '1' as user_id,
       'aikaifa' as user_name
union all 
select '2' as user_id,
       '小爱' as user_name
union all 
select '3' as user_id,
       null as user_name 
union all 
select '4' as user_id,
       '' as user_name 

查询结果:

Hive Sql空值陷阱——空值、NULL、不等于判断问题


筛选姓名不为‘小爱’

如果我们查询sql这样写

select * from test.tb_user where user_name <>'小爱'

执行结果

Hive Sql空值陷阱——空值、NULL、不等于判断问题

细心的你,会发现查询结果只有两条记录,id为3的那条记录没有筛选出来,要知道,user_name 为null 符合条件啊,怎么就没有筛选到呢。

select * from test.tb_user where user_name <>'小爱'

通过这种方式会漏了为null的数据,需要对null进行单独的操作。

select * from test.tb_user where user_name <>'小爱' or user_name is null


筛选null

select * from test.tb_user  where user_name is null


筛选空字符串

select * from test.tb_user where length(user_name)=0;


总结

<> 想要查询时,需要针对为null做特殊处理

'' 表明的是字段不为null且为空字符串,此时用 a is null 是无法查询这种值的,必须通过 a='' 或者 length(a)=0 查询

#360行闪光时刻#

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】UV vs pyenv:谁才是更强的 Python 管理工具?(2025-11-21 23:07)
【系统环境|】7种 Python 虚拟环境工具全面对比:新手应该选择哪种(2025-11-21 23:06)
【系统环境|】Python pyQt5 适于新手上路(第一篇 环境和配置)(2025-11-21 23:06)
【系统环境|】pyhon基础-(一)开发环境搭建(2025-11-21 23:05)
【系统环境|】Markdown简洁高效的文本标记语言,技术人的写作利器之扩展语法(2025-11-21 23:05)
【系统环境|】html开发笔记06- 字体标签和文字标签(2025-11-21 23:04)
【系统环境|】jQuery HTML代码/文本(2025-11-21 23:04)
【系统环境|】QT5.9.9生成并调用自己的DLL(2025-11-21 23:03)
【系统环境|】C#调用C++常用的两种方式(2025-11-21 23:03)
【系统环境|】科普 | 聊聊COD吃鸡之余,发现个强力清理注册表软件(2025-11-21 23:02)
手机二维码手机访问领取大礼包
返回顶部