【问题标题】:Display substring seperated by / in Hive在 Hive 中显示由 / 分隔的子字符串
【发布时间】:2019-10-16 15:43:32
【问题描述】:
我的表中有一个列,其中包含以下条目:
this/is/my/dir/file
this/is/my/another/dir/file
我想显示没有文件名的字符串:
this/is/my/dir/
这是我正在使用的查询:
select regexp_replace('this/is/my/another/dir/file','[^/]+','');
【问题讨论】:
-
我不确定如何在 Hive 中实现该目标,但在 SQL-server 中,您可以执行this 之类的操作,其中您的表达式应为“/”。希望对您有所帮助。
标签:
sql
apache-spark
hive
hiveql
【解决方案1】:
好的,你可以用regexp_replace去掉file只保留dir路径,因为我们知道文件名不包含字符'/'并且总是位于dir路径的末尾,所以正则表达式可以写成'[^/]+$',例子如下,意思是将正则表达式'[^/]+$'的子串替换为空的''。
select regexp_replace('/this/is/my/dir/file','[^/]+$','') as dir;
+-------------------+
| dir |
+-------------------+
| /this/is/my/dir/ |
+-------------------+
select regexp_replace('this/is/my/another/dir/file','[^/]+$','') as dir;
+--------------------------+
| dir |
+--------------------------+
| this/is/my/another/dir/ |
+--------------------------+