hive进阶#查询表

#分割字符串(split)

select split('要分割的字符串', '分隔符') from test;

截取字符串中的某个值:

hive> select split('abcdef', 'c')[0] from test;
ab

特殊符号作为分隔符时,需做转义 (前缀加上\):

hive> select split('ab_cd_ef', '\_')[0] from test;
ab
hive> select split('ab?cd_ef', '\\?')[0] from test;
ab

#展开字符串(行变列)(只能查看展开的字符串,用侧视图解决)

select explode(split(原字符串,'分隔符')) as 给展开后数据的新字段 from 表名;

#侧视图(lateral view关键字多配合eplode)

select 原表名字段名,改名后字段名1,改名后字段名2,改名后字段名3 from 原表名
lateral view explode(原字段名1) 临时表名1 as 改名后字段名1
lateral view explode(原字段名2) 临时表名2 as 改名后字段名2,改名后字段名3;

#截取字符串(substr)(下标取负数是从末尾算,像python)

select substring(字符串,开始下标,向右取几个) from 表名;

#临时表查询(临时表用完就抛弃)

select 字段1,字段2 from  (select 字段1,count(字段) as 字段2 from 表名)   临时表名 where 条件;

#正则表达式查询

select regexp(原字符串, 正则表达式);//能匹配就返回true,否就false
select like(原字符串, 正则表达式);//能匹配就返回true,否就false

#正则表达式截取

select regexp_extract(原字符串,正则表达式, 指定字符);//指定字符:0,返回全部;1,返回第一个;2,返回第二个

试例:

select regexp_extract('honeymoon', 'hon(.*?)(moon)', 2);
moon

#正则表达式替换

select regexp_replace(原字符串,要被替换字符串的部分,用来替换的字

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值