Hive内置函数

1.select length("itcast");
查看字符串长度;返回结果:6
2.select reverse("itcast"); --字符串反转
返回结果:tsacti
3.select concat("angela","baby"); --暴力拼接
返回结果:angelababy
4.--带分隔符字符串连接函数:concat_ws(separator, [string | array(string)]+)
分隔符 拼接内容
select concat_ws('.', 'www', array('itcast', 'cn'));
返回结果:www.itcast.cn
5.--字符串截取函数:substr(str, pos[, len]) 或者 substring(str, pos[, len]) len表示截取长度
select substr("angelababy",-2); --pos是从1开始的索引,如果为负数则倒着数
--by
select substr("angelababy",2,2);
--ng

6.--分割字符串函数: split(str, regex)
--split针对字符串数据进行切割 返回是数组array 可以通过数组的下标取内部的元素 注意下标从0开始的
select split('apache hive', ' ');
--返回数组
select split('apache hive', ' ')[0];
返回:apache
select split('apache hive', ' ')[1];
返回:hive




---------日期函数---------------------------------------------------------
1.select current_date(); 获取当前日期

2.select unix_timestamp();获取当前unix时间戳函数(一串数字从1970年往后数)

3.select unix_timestamp(‘20111207 13:01:03’,‘yyMMdd HH:mm:ss’)日期转时间戳

4.select from_unixtime(1618238391);select from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');时间戳转日期
5.-日期比较函数: datediff  日期格式要求'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'
select datediff('2012-12-08','2012-05-09');相差日期 返回结果:218
--日期增加函数: date_add
select date_add('2012-02-28',10);返回结果2012-03-09
--日期减少函数: date_sub
select date_sub('2012-01-1',10);



----Mathematical Functions 数学函数-------------
--取整函数: round 返回double类型的整数值部分 (遵循四舍五入)
select round(3.1415926);
--指定精度取整函数: round(double a, int d) 返回指定精度d的double类型
select round(3.1415926,4);
--取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数
select rand();
--指定种子取随机数函数: rand(int seed) 得到一个稳定的随机数序列
select rand(3);


-----Conditional Functions 条件函数------------------
--使用之前课程创建好的student表数据
select * from student limit 3;

--if条件判断: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
select if(1=2,100,200); --三则表达式
select if(sex ='男','M','W') from student limit 3;

--空值转换函数: nvl(T value, T default_value)
--空值为变为第二个,不空不变
select nvl("allen","itcast");
select nvl(null,"itcast");

--条件转换函数: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end;
select case sex when '男' then 'male' else 'female' end from student limit 3;
posted @ 2024-08-24 12:16  艾鑫4646  阅读(6)  评论(0编辑  收藏  举报