在hive里面,其实我们主要是做一些sql相关的操作,因此对于普通的crud操作之外,还会涉及到其他的函数,这篇文章我们介绍下hive内置函数之nvl函数。
nvl函数的意思是给值为null的查询结果数据赋值,他的格式是NVL(columnname, defaultValue),这时候如果查询列的值为null的话,则nvl函数会返回defaultvalue的值。下面我们举个例子:
首先我们创建一张users表:
CREATE TABLE `school_user`( `id` int, `username` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'field.delim'=',', 'serialization.format'=',') STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 'hdfs://192.168.31.218:8020/user/hive/warehouse/users.db/school_user' TBLPROPERTIES ( 'bucketing_version'='2',)
然后我们向里面插入5条数据,第五条的username为空,如下图:
此时我们使用nvl函数的话,查询语句如下:
select id,nvl(username,"未知") from school_user;
可以看到第五条的username为空,显示的就是我们的defaultvalue了。
还没有评论,来说两句吧...