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(),保证每次截取的都是最后一个’.'后面的数据。文章来源:https://www.toymoban.com/news/detail-412390.html
select reverse(split(reverse('Hive.Spark.Flink.Hadoop'),'\\.')[0]);
select reverse(split(reverse('Java.Python.Scala'),'\\.')[0]);
答案:
文章来源地址https://www.toymoban.com/news/detail-412390.html
到了这里,关于Hive截取指定位子或字符后面的数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!