Hive如何提取字符串中最后一个逗号之后的全部内容
Hive 提取字符串最后一个逗号后内容的实现方法
提供两种可直接落地的实现方案:
方案1:正则匹配法(推荐)
直接使用Hive内置的regexp_extract函数完成匹配,逻辑简洁:
SELECT regexp_extract(待处理字段名, '([^,]+)$', 1) AS 提取结果 FROM 表名;
正则说明:([^,]+)$表示匹配字符串末尾所有不包含逗号的连续字符,第三个参数1表示取第一个捕获组的匹配内容。
适配示例数据测试结果如下:
- 输入
abc,xyz,tuv→ 输出tuv - 输入
abc,123,abc,def→ 输出def
方案2:反转分割法
如果偏好使用分割函数实现,可通过反转字符串再取首段的逻辑实现:
SELECT reverse(split(reverse(待处理字段名), ',')[0]) AS 提取结果 FROM 表名;
逻辑说明:先将整个字符串反转,按逗号分割后取第一个元素,再次反转即可得到原字符串最后一段内容。
特殊场景适配
如果待处理数据存在最后一个逗号后带多余空格的情况,可嵌套trim函数做清洗:
SELECT trim(regexp_extract(待处理字段名, '([^,]+)$', 1)) AS 提取结果 FROM 表名;
内容的提问来源于stack exchange,提问作者user3044949
相关产品推荐
相关产品推荐

