0


Hive截取指定位子或字符后面的数据

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指定的字符。

  1. 第一参数: 要处理的字段
  2. 第二参数: 需要匹配的正则表达式
  3. 第三参数: 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]);

答案:
在这里插入图片描述

标签: hive 大数据

本文转载自: https://blog.csdn.net/holiday0520/article/details/129403657
版权归原作者 小谢不缺女朋友 所有, 如有侵权,请联系我们删除。

“Hive截取指定位子或字符后面的数据”的评论:

还没有评论