首页 > 解决方案 > 在 Hive 中显示由 / 分隔的子字符串

问题描述

我的表中有一个列,其中包含以下条目:

this/is/my/dir/file
this/is/my/another/dir/file

我想显示没有文件名的字符串:

this/is/my/dir/

这是我正在使用的查询:

select regexp_replace('this/is/my/another/dir/file','[^/]+','');

标签: sqlapache-sparkhivehiveql

解决方案


OK,你可以使用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/  |
+--------------------------+

推荐阅读