hive函数之关系运算

177 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情

hive的常用函数系列更文又来啦,这次也是非常实用的函数介绍,关系运算。

关系运算

1、不等值比较: <> 作用:比较运算符号两边的表达式是否相等

使用方法:A <> B ,A和B可以分别为表达式或者某一字段,常用于筛选条件和判断条件,可以操作的类型非常全面,基本包含了所有的基本类型。

具体功能描述:当不等值左右的表达式有一个为null的时候,就返回null;如果左右的表达式不相等,那么就返回true,如果左右相等,则为 FALSE; 当这个比较被用作判断某值不为空时,使用方法是,A <> '',意思是A不等于‘ ’或者null。

select 1 where 1 <> 2;
>> 1 

2、regexp 正则匹配 作用:判断字符串是否包含正则表达式的正则语法

使用方法:A REGEXP B 或者是 REGEXP(A,B),表达式内容用单引号括起来,可操作类型为字符串类型。

具体功能描述:regexp的作用就是A中的字符串如果符合B的正则表达式结果,就返回true,否则返回false。如果A和B中有一个为null,就返回null。所以这个表达式的返回结果就是boolean或者null的类型。

下图则表示football是否符合'^f.*l$'这个正则表达式的结果,如果这里对正则表达式不太清楚的同学,要自行去查了哈,当然这里就是符合的,


select 1 where 'football' regexp '^f.*l$';
>> 1
select 1 where 'football' regexp '^footba';
>> 1

其他相类似的函数还有like、rlike。

他还有一个衍生的函数regexp_replace,顾名思义就是包含了正则匹配的作用和替换的作用,语法为 regexp_replace(string A, string B, string C),这三个参数分别代表的含义是A表示待判断的字符串,B则是表示正则表达规则的字符串,C则是符合正则表达的部分需要替换的字符串。

另外一个衍生的函数regexp_extract,作用就是按照指定的正则规则拆分字符串然后返回指定索引上的字符。语法表达式为regexp_extract(string A, string p, int index),解释一下这个表达式的意思就是字符串A按照规定的正则表达式拆分规则p拆分,按照索引值index返回。index不同于java当中是从1开始计数。