hive函数

 

字符串函数

---------String Functions字符串函数-— —---------
select concat("liu", "yan")
-- 带分隔符字符串连接函数:concat_ws(separator,[string|array(string)]+)
select concat_ws('.', 'www', array('51doit', 'com'));
--字符串截取函数: substr(str, pos[, len])或者substring(str, pos[,len])
select substr("angelababy", -2); --pos是从1开始的索引,如果为负数则倒着数
select substr("angelababy", 2, 2);
-- 正则表达式替换函数: regexp_replace(str, regexp,rep)
select regexp_replace('100-200', '(\\d+)', 'num');
-- 正则表达式解析函数:regexp_extract(str,regexp[, idx]) 提取正则匹配到的指定组内容
select regexp_extract('100-200', '(\\d+)-(\\d+)', 2);
-- URL解析函数: parse_url 
select parse_url('http://www.51doit.com/path/p1.php?query=1', 'HOST');
select parse_url('http://www.51doit.com/path/p1.php?query=1', 'PATH');
select parse_url('http://www.51doit.com/path/p1.php?query=1', 'QUERY');
--分割字符串函数: split(str, regex)
select split('apache hive', '\\s+');
--json解析函数: get_json_object(json_txt, path)  
-- $ 获取对象
select get_json_object(
               '[{"name":"柳岩","sex":"女","age":"38"},{"name":"唐嫣","sex":"女","age":"18"}]', '$.[0]');
select get_json_object(
               '[{"name":"柳岩","sex":"女","age":"38"},{"name":"唐嫣","sex":"女","age":"18"}]', '$[0].name');


-- 字符串长度函数: length(str / binary)
select length("I Love Hive");
-- 字符串反转函数: reverse
select reverse("I Love Hive");
-- 字符串连接函数:concat(stri, str2, ... strN)
-- 字符串转大写函数: upper , ucase
select upper("I Love Hive");
select ucase("I Love Hive");
-- 字符串转小写函数:lower , Lcase
select lower("I Love Hive");
select lcase("I Love Hive");
-- 去空格函数: trim去除左右两边的空格
select trim(" I Love Hive ");
-- 左边去空格函数: ltrim
select ltrim(" I Love Hive ");
-- 右边去空格函数:rtrim
select ltrim(" I Love Hive ");
-- 空格字符串函数: space(n)返回指定个数空格
select space(4);
-- 重复字符串函数:repeat(str, n)重复str字符串n
select repeat("I Love Hive", 2);
-- 首字符ascii函数: ascii
select ascii("angela");
--a对应ASCII 97
--左补足函数:lpad
select lpad('hi', 5, '*');
--右补足函数: rpad
select rpad('hi', 5, '*');
--集合查找函数:find_in_set(str ,str_array)  返回str的位置 从1开始
select find_in_set('b', 'abc,b,ab,c,def');

日期函数

-- 当前日期
select current_date();
-- 获取当前时问歌:current_timestamp
-- 同一查询中对current_timestamp 的所有调用均返回相同的值。
select current_timestamp();
-- 获取当前UNIX时间戳函数:unix_timestamp
select unix_timestamp();
-- 日期转UNIX时问戳函数: unix_timestamp
select unix_timestamp("2022-08-13 19:08:03");
-- 指定格式日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp('20220813 19:08:03', 'yyyyMMdd HH:mm:ss');
--UNIX时间戳转日期函数:from_unixtime
select from_unixtime(1660417683);
select from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');
--日期比较函数; datediff日期格式要求'yyyy-MN-dd HH:mm:ss ' or 'yyyy-MM-dd '
select datediff('2022-08-08', '2022-08-10');
-- 日期增加函数: date_add
select date_add('2022-08-08', 10);
--日期减少函数: date_sub
select date_sub('2012-08-08', 10);
-- 日期格式化
select date_format('2022-08-13 19:08:03','yyyy/MM/dd');
-- 抽取日期函数:to_date
select to_date('2022-08-13 19:08:03');
-- 获取年:year
select year('2022-08-13 19:08:03');
-- 获取月:month
select month('2022-08-13 19:08:03');
-- 获取日:day
select day('2022-08-13 19:08:03');
-- 获取时:hour
select hour('2022-08-13 19:08:03');
-- 获取分:minute
select minute('2022-08-13 19:08:03');
-- 获取秒:second
select second('2022-08-13 19:08:03');
-- 获取周:weekofyear 指定年份的第多少周
select weekofyear('2022-08-13 19:08:03');

数学函数

-- 四舍五入: round返回double类型的整数值部分(四舍五入)
select round(3.1415926);
select round(3.1415926, 2);
-- 向下取整函数:floor
select floor(3.1415926);
select floor(-3.1415926);
-- 向上取整函数: ceil
select ceil(3.1415926);
select ceil(-3.1415926);
--取随机数函数: rand每次执行都不一样返回一个0到1范围内的随机数
select rand();
-- 在同一个查询中保证同一个随机数
select rand(10);

-- 二进制
select bin(100);
-- 转换进制  conv(num,现在进制,要转换的进制)
select conv(11, 10, 2);
-- 绝对值
select abs(-100);

集合函数

-- 创建map集合 map(k1,v1,k2,v2...)
select map('zhangsan', '18', 'lisi', '28');
-- 获取map所有的键
select map_keys(map('zhangsan', '18', 'lisi', '28'));
-- 获取map所有的值
select map_values(map('zhangsan', '18', 'lisi', '28'));
-- 获取map指定键的值
select map('zhangsan', '18', 'lisi', '28')['zhangsan'];
-- 获取map的长度
select size(map('zhangsan', '18', 'lisi', '28'));
-- 创建数组 array(值1,值2,值3);
select array(1, 3, 5, 6);
-- 数组取值
select array(3, 3, 5, 6)[0];
-- 数组长度
select size(array(3, 3, 5, 6));
-- 数组排序
select sort_array(`array`(13, 7, 5, 2, 1));
-- 创建结构体
select struct('liuyan', 38);
-- 取值
select struct('liuyan', 38).col2;

条件判断函数

-- if判断 类似java三元表达式  if(boolean testCondion,T valueTrue,T valueFalse)
select if(1 == 1, 'a', 'b');
-- 判断是否为空: isnull 空返回true 非空返回false
select isnull(null);
select isnull(10);
-- 判断是否非空:isnotnull  不是null返回true 是null返回false
select isnotnull(null);
select isnotnull(10);
-- nvl(T value, T defaultValue) 判断value是否为空 非空返回value, 是空返回defaultValue
select nvl("aa", "bb");
select nvl(null, "bb");
--coalesce(v1,v2,v3,v4...)返回第一个非空的值 如果都为null返回null
select coalesce(null, null, null, null);
select coalesce(null, null, 1, 2, 3, 4, null, 5, 6);
select coalesce(null, 3, 1, 2, 3, 4, null, 5, 6);
-- assert_true(条件)  条件为true 返回null 条件为false 报错
select assert_true(1 == 2);

脱敏加密函数

-- mask 将大写字母转换为X 小写字母转换为x 数字转换为n
select mask("abc123XYZ");
-- 将大写字母转换为- 小写字母转换为* 数字转换$
select mask("abc123XYZ",'-','*','$'); -- 自定义替换的字母

--对前n个进行脱敏 mask_first_n(String str, int n);
select mask_first_n("abc123XYZ",2);
--对后n个进行脱敏 mask_last_n(String str, int n);
select mask_last_n("abc123XYZ",4);
-- 除了前n个 其余脱敏处理
select mask_show_first_n("abc123XYZ",2);
-- 除了后n个 其余脱敏处理
select mask_show_last_n("abc123XYZ",4);
-- 返回基于str的哈希 非字符串 返回Null;
select mask_hash("abc");
-- 获取哈希值
select hash("abc");

--SHA-1加密
select sha1("abc");
--SHA-2家族算法加密 sha2(string/binary,int)(SHA-224,SHA-256,SHA-384,SHA-512)
select sha2("abc",256);
select sha2("abc",512);
--crc32加密
select crc32("abc");
--md5加密
select md5("abc");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值