Hive截取指定字符后面的数据
一、规则
1、样例数据
Hive.Spark.Flink.Hadoop
Java.Python.Scala
2、题目要求
截取最后一个’.'后面的数据
3、结果预览
Hadoop
Scala
二、思路
方法1
使用substr()函数,在通过instr()函数找到结束位子,为了保证每次截取的都是最后一个’.'后面的数据,这里使用字符串反转函数reverse()。
select reverse(substr(reverse('Hive.Spark.Flink.Hadoop'),0,instr(reverse('Hive.Spark.Flink.Hadoop'),'.')-1));select reverse(substr(reverse('Java.Python.Scala'),0,instr(reverse('Java.Python.Scala'),'.')-1));
答案:
方法2
使用regexp_extract()正则匹配函数。
regexp_extract()函数介绍:
1、语法
regexp_extract(string subject, string pattern, int index)
2、返回值
string
3、说明
将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。
- 第一参数: 要处理的字段
- 第二参数: 需要匹配的正则表达式
- 第三参数: 0 是显示与之匹配的整个字符串 1 是显示第一个括号里面的 2 是显示第二个括号里面的字段…注意,在有些情况下要使用转义字符(双斜杠了‘\’)。
select regexp_extract('Hive.Spark.Flink.Hadoop','.*\\.(.*)',1);select regexp_extract('Java.Python.Scala','.*\\.(.*)',1);
答案:
方法3
使用split()分割函数,在配合字符串反转函数reverse(),保证每次截取的都是最后一个’.'后面的数据。
select reverse(split(reverse('Hive.Spark.Flink.Hadoop'),'\\.')[0]);select reverse(split(reverse('Java.Python.Scala'),'\\.')[0]);
答案:
版权归原作者 小谢不缺女朋友 所有, 如有侵权,请联系我们删除。