在 Hive SQL 中提取具有特定模式的子字符串

Posted

技术标签:

【中文标题】在 Hive SQL 中提取具有特定模式的子字符串【英文标题】:Extract substring with a specific pattern in Hive SQL 【发布时间】:2021-04-04 04:08:02 【问题描述】:

我有一列包含此示例数据。我需要提取所有以“M6”开头的子字符串。有没有办法用 regexp_extract 做到这一点?

Data Column
HEY01230328_M6K21SG_UNO_NYC_241
M6EW2BJ_UNO_NYC_251
M6HW2WL_UNO_NYC_251
HEY08460329_NA_M6LAB3D_UNO_NYC_241
Desired Output
M6K21SG
M6EW2BJ
M6HW2WL
M6LAB3D

【问题讨论】:

【参考方案1】:

尝试使用:

SELECT colname FROM tableName WHERE REGEXP_EXTRACT(colname, ".*(M6[^_]*).*",1)

使用的正则表达式:

.*(M6[^_]*).*

Regex Demo

说明:

.* - 匹配 0+ 个非换行符的字符 (M6[^_]*) - 匹配 M6 后跟 0+ 个非 _ 的字符。因此,在 M6 之后,它会继续匹配所有内容,直到找到下一个 _。括号用于将这个子匹配存储在第 1 组中 .* - 匹配 0+ 个非换行符的字符

【讨论】:

以上是关于在 Hive SQL 中提取具有特定模式的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用 osx 终端从外部硬盘驱动器中提取具有特定名称的子文件夹。

如何在 SQL Server 中提取此特定子字符串?

在文本中的特定字符之前或之后提取的子字符串

从一列中提取特定字符串模式

如何从 C++ 中的 getline 函数中提取特定的子字符串?

hive中的字符串提取