sql - 在 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','[^/]+','');
解决方案
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/ |
+--------------------------+
推荐阅读
- python - 如何使用python在csv中的特定列中逐行添加一些文本
- opencv - HoughLinesP:线条没有到达边界
- python - Hstack数组函数,未知回溯错误
- javascript - 在组件属性中使用 React.forwardRef 内联是否有效?
- javascript - Javascript页面刷新并保留参数
- c# - 通过其 SVG 对应物生成的光栅图像中存在意想不到的视觉元素
- docker - Windows 容器上的 Docker 容器 ID
- sql-server - 无直接连接的 SSAS 表格动态行级安全性
- python-3.x - Tkinter - 枕头库 - 打开图像时 TypeError 'dict' 对象不可调用
- c# - Newtonsoft NullValueHandling.Ignore 在序列化时似乎没有删除空值