У меня есть столбец в моей таблице с такими записями, как:
this/is/my/dir/file
this/is/my/another/dir/file
Я хочу отобразить строку без имени файла:
this/is/my/dir/
Это запрос, который я использую:
select regexp_replace('this/is/my/another/dir/file','[^/]+','');
Хорошо, вы можете использовать regexp_replace
, чтобы удалить file
и зарезервировать только путь к каталогу, поскольку мы знаем, что имя файла не содержит символ '/' и всегда находится в конце пути к каталогу, поэтому регулярное выражение можно записать как '[^/]+$'
, примеры как ниже, это означает, что заменить подстроку с 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/ |
+--------------------------+
Я не уверен, как достичь этих целей в Hive, но на SQL-сервере вы можете сделать что-то вроде это, в котором ваше выражение должно быть '/'. Надеюсь, поможет.