sql - hive中的REGEXP_EXTRACT获取字符串的子字符串

标签 sql regex hive

嗨,我是 hive 新手,我正在使用 regexp_extract 从字符串中获取子字符串

my string is '/abc/def/ghi/'

如何使用 regexp_extract 函数获取 abc 或 def 或 ghi

最佳答案

删除前导和尾随的'/'并使用split()获取数组。 split()也使用正则表达式:

hive> select split(regexp_replace('/abc/def/ghi/','^/|/$',''),'/')[0];

abc

hive> select split(regexp_replace('/abc/def/ghi/','^/|/$',''),'/')[1];

def

hive> select split(regexp_replace('/abc/def/ghi/','^/|/$',''),'/')[2];

ghi

或者在子查询中:

hive> select array[0], array[1], array[2] 
      from (select split(regexp_replace('/abc/def/ghi/','^/|/$',''),'/') as array) s;
OK
_c0     _c1     _c2
abc     def     ghi
Time taken: 0.192 seconds, Fetched: 1 row(s)

关于sql - hive中的REGEXP_EXTRACT获取字符串的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54669051/

相关文章:

SQL - 如何选择值 A 而不是 B 的记录? (A和B属于不同行)

java - 如何使用 java 的 String.replaceAll(String, String) 方法将 "<br><br><br><br><br><br>"之类的字符串转换为 "<br>"?

sql - 查找并替换 SQL 中的所有特殊字符

mysql - 一年中每个月的 SUM 数据

mysql - SQL 查询/Spark 数据帧外连接并减去两个表的值

ios - Objective-C - 具有特定子字符串的 NSRegularExpression

Java 正则表达式 : how to back-reference capturing groups in a certain context when their number is not known in advance

hadoop - 在 HDP-1.3.3 上使用 kerberos 的 Oozie 配置单元操作

hive - 当少数表没有主键时,sqoop import-all 具有并行性

join - 优化多表连接的配置单元查询