在 Hive 中提取具有特定模式的子字符串 SQL
Extract substring with a specific pattern in Hive SQL
我有一列包含此示例数据。我需要提取所有以“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
尝试使用:
SELECT colname FROM tableName WHERE REGEXP_EXTRACT(colname, ".*(M6[^_]*).*",1)
使用正则表达式:
.*(M6[^_]*).*
解释:
.*
- 匹配任何非换行符的字符出现 0 次以上
(M6[^_]*)
- 匹配 M6
后跟出现 0+ 次非 _
的任何字符。因此,在 M6 之后,它会继续匹配所有内容,直到找到下一个 _
。括号用来存放这个子匹配在Group 1
.*
- 匹配任何非换行符的字符出现 0 次以上
我有一列包含此示例数据。我需要提取所有以“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 |
尝试使用:
SELECT colname FROM tableName WHERE REGEXP_EXTRACT(colname, ".*(M6[^_]*).*",1)
使用正则表达式:
.*(M6[^_]*).*
解释:
.*
- 匹配任何非换行符的字符出现 0 次以上(M6[^_]*)
- 匹配M6
后跟出现 0+ 次非_
的任何字符。因此,在 M6 之后,它会继续匹配所有内容,直到找到下一个_
。括号用来存放这个子匹配在Group 1.*
- 匹配任何非换行符的字符出现 0 次以上