如何在Hive中显示由/分隔的子字符串

时间:2019-05-31 01:11:31

标签: sql apache-spark hive hiveql

我的表中有一列,其条目如下:

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

我要显示不带文件名的字符串:

this/is/my/dir/

由于某些条目具有较大的路径,因此我无法真正计算/。 如何在不计算每个条目的/的情况下实现这一目标?

1 个答案:

答案 0 :(得分:1)

好的,您可以使用regexp_replace删除file并仅保留目录路径,因为我们知道文件名不包含字符'/'并且始终位于文件末尾dir路径,因此regexp可以写为'[^/]+$',如下例所示,这意味着用regexp '[^/]+$'替换子字符串为空的''

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/  |
+--------------------------+