oracle - 在 oracle 中捕获子字符串
问题描述
我想搜索从以下类型的字符串中获取子字符串 -
TEST-01-2019/10/10 01:01:20
预期结果 -
TEST-01
基本上我想提取日期连字符之前的所有内容。我怎样才能做到这一点?通过正则表达式?
解决方案
尝试使用REGEXP_SUBSTR
:
SELECT REGEXP_SUBSTR(col, '^[^-]+-[^-]+')
FROM yourTable;
演示
这将选择TEST-01
您提供的输入。逻辑是匹配的:
^ from the beginning of the string
[^-]+ one or more non dash characters
- a literal dash
[^-]+ one or more non dash characters
这对应于日期之前的部分,至少对于您碰巧向我们展示的样本而言。
另一种方法可能是正则表达式替换日期字符串,直到输入结束:
SELECT REGEXP_REPLACE(col, '-[0-9]{4}/[0-9]{2}/[0-9]{2}.*', '')
FROM yourTable;
演示
此正则表达式模式匹配破折号,后跟YYYY/MM/DD
格式中的日期,然后是直到字符串末尾的所有内容。然后它用空字符串替换这个匹配,有效地将它从输入中删除。
推荐阅读
- java - 如何让 eclipse 项目在共享项目中引用来自 maven 本地存储库的源 jar?
- spring-boot - Spring Boot 验证 CGLIB 增强型控制器组件未自动装配
- java - 带有 testNG 资源和依赖项的 Java fatJar
- javascript - 使用输入字段中的数据填充确认/弹出框,并允许用户在 html 和 jquery 中进行编辑
- python - 运行 xgboost 算法给出编译错误
- node.js - Elasticsearch 创建连接字段(Nodejs)
- javascript - React-redux 正在分派一个 API 操作,当请求发送回 401 错误时
- svn - SVN 网页用户界面
- arrays - 从 Flutter 中的字符串写入 Firestore 中的数组
- javascript - 聚合不给出任何结果