【SQL相关】Hive中空值与Null的判断及处理

这篇具有很好参考价值的文章主要介绍了【SQL相关】Hive中空值与Null的判断及处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.空值与null的区别

        null没有被分配任何值或对象,表示这个字段没有被赋值或者值是未知的,占空间,不会被count()函数统计;

        空值表示这个字段被赋了一个空的值,不占空间,会被count()函数统计。

2.空值与null的判断

        null和''(空值)在SQL中的筛选过滤条件是不一样的,is null 识别不了 '',同样地,'' 也识别不了 null 。

2.1 null判断

--筛选null
select * from table where a is null
--筛选非null
select * from table where a is not null

2.2 空值判断

--筛选空值
select * from table where a = ''
--筛选非空值
select * from table where a <> ''

--或者

--筛选空值
select * from table where length(a) = 0
--筛选非空值
select * from table where length(a) <> 0

2.3 null与空值判断

--筛选null与空值
select * from table where a is null and a = ''
--筛选非null与非空值
select * from table where a is not null and a <> ''

--或者

--筛选null与空值
select * from table where nvl(a,'') = ''
--筛选非null与非空值
select * from table where nvl(a,'') <> ''

3.空值与null的处理

3.1 null处理

nvl函数

nvl(expr1,expr2)

例如:nvl(a,0)

如果a字段值为null,那么null转化为0这个值,如果a字段值不为null,则显示a本来的值。

拓展--nvl2(expr1,expr2,expr3)

例如:nvl2(a,0,1)

如果a字段值为null,那么null转化为0这个值,如果a字段值不为null,则转化为1这个值。

3.2 空值处理

        hive本身没有replace函数,可以用translate和regexp_replace函数代替。

translate(expr1,expr2,expr3)

例如:translate(a,'',0)

将a字段的空值替换为0

regexp_replace(expr1,正则表达式,expr2)

例如:regexp_replace(a,"[\\s]+|[\u3000]+",0)

将a字段的空值替换为1([\\s]+|[\u3000]+是正则)


        对于null的处理其实也可以使用translate和regexp_replace函数。

translate(a,null,0)

regexp_replace(nvl(a,""),"[\\s]+|[\u3000]+",0)

 文章来源地址https://www.toymoban.com/news/detail-755611.html

到了这里,关于【SQL相关】Hive中空值与Null的判断及处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [SQL Server 2008R2] 有关于判断表、字段、存过等元素是否存在相关SQL写法

    查询普通表是否存在可以使用object_id函数,下面的例子是查询表“t_test”是否存在之后从而进行其他的DLL操作:   临时表同样可以用object_id但是表名要记得加上库名和表空间: 或者 以上这个条件自行发挥,我这边使用的是like语句,判断的是只要是#temp开头的临时表存在。 有

    2023年04月26日
    浏览(38)
  • Hive SQL判断一个字符串中是否包含字串的N种方式及其效率

    这是个常见需求,某个表tab中,需要判断某个string类型的字段中,哪些数据含有一个子串。以下给出6种方案,并给出效率对比。 可以使用regexp_extract(subject, pattern, index)函数来提取字符串中匹配指定正则表达式的字串。要判断一个字符串中是否包含字串\\\"ABCD;\\\",可以使用如下代

    2024年01月24日
    浏览(49)
  • 1/50 hive sql 日期处理函数

    目录 一、获取当前时间 二、获取指定时间 三、转换时间格式 【1】to_date(string timestamp) 【2】date_format(date string timestamp,string format) 【3】from_unixtime(bigint unixtime,string format) 【4】unix_timestamp(date string timestamp,string pattern)  【5】其余格式的指定转换 regexp_replace()、from_unixtime(unix_ti

    2023年04月25日
    浏览(34)
  • Hive SQL 中ARRAY或MAP类型数据处理:lateral view explode()/posexplode()——行转列函数

    前言:在对表数据进行批量处理过程中,常常碰上某个字段是一个array或者map形式的字段,一列数据的该字段信息同时存在多个值,当我们需要取出该数组中的每一个值实现一一对应关系的时候,可以考虑使用lateral view explode()/posexplode() 进行处理。 一、提要:explode()本身是

    2024年02月04日
    浏览(32)
  • Golang 中空的切片转化成 JSON 后变为 null 的问题如何解决?

    目录 问题 原因 小结 在 Golang 中,经常需要将其他类型(例如 slice、map、struct 等类型)的数据转化为 JSON 格式。有时候转化的结果并不是预期中的,例如将一个空的切片转化为 JSON 时,会变成\\\"null\\\",而并非预期的\\\"[]\\\"。示例代码如下: 运行示例看下结果: 结果输出的值为 “

    2024年02月07日
    浏览(31)
  • 【SQL刷题】Day10----SQL高级过滤函数专项练习

    博主昵称:跳楼梯企鹅 博主主页面链接: 博主主页传送门 博主专栏页面连接: 专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各位技术友给予指导。 博主座右铭:发现光,追随光,

    2023年04月09日
    浏览(33)
  • SQL | 过滤数据

    4.1-使用WHERE子句 数据根据 WHERE 子句中指定的搜索条件进行过滤。WHERE 子句在表名( FROM 子句)之后给出。 上述语句查询价格为3.49的行,然后输出名字和价格两列。 显示的结果可能是 3.49、 3.490、 3.4900等。出现这样的情况,往往是因为 DBMS 指定了所使用的数据类型及其默认

    2024年02月13日
    浏览(28)
  • SQL | 高级数据过滤

    通过组合WHERE子句,建立功能更强的检索语句。 5.1-组合WHERE子句 前面写的都是单一条件下的WHERE子句,SQL语句允许给出多个WHERE子句来组合检索,这些WHERE子句通过AND子句或者OR子句进行连接。 操作符(operator) 用来联结或改变WHERE子句中的子句的,也称为逻辑操作符(

    2024年02月13日
    浏览(25)
  • Oracle sql sum函数返回null,默认值0

    在Oracle SQL中,当你使用 SUM 函数对一组值进行求和时,如果这组值中包含 NULL ,那么 SUM 函数将忽略这些 NULL 值,并返回非 NULL 值的总和。 如果你希望在 SUM 函数返回 NULL 时有一个默认值,你可以使用 COALESCE 或 NVL 函数。 使用 COALESCE 函数: 使用 NVL 函数: 在这两个例子中,

    2024年01月16日
    浏览(28)
  • 如何使用SQL系列 之 如何在SQL中使用比较运算符和IS NULL运算符

    在某些 结构化查询语言 (SQL)语句中, WHERE 子句可以用来限制给定操作会影响哪些行。他们通过定义特定的条件来做到这一点,这些条件被称为 搜索条件 ,每一行必须满足才会受到影响。搜索条件由一个或多个 谓词 组成,它们是特殊的表达式,计算结果为“true”、“false”

    2024年02月10日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包