sql - SQL 查询以选择两个字符之间的字符串
问题描述
我想检索两个字符之间的字符串。我有像“ Attachments:Attachments~Attachment ”这样的整个字符串,我想在:和~之间取子字符串,输出的字符将是Attachments。这如何在 SQL/Oracle 选择语句中完成?
解决方案
您可以使用该REGEXP_SUBSTR
功能。从 Oracle 11g 开始,该函数有一个参数,可让您指定要返回的捕获组:
SELECT regexp_substr('Attachments:Attachments~Attachment', '\:(.+)\~', 1,1,NULL,1) from dual;
旧版本有一些解决方法(另请参阅https://stackoverflow.com/a/7759146/14015737)。您可以缩短结果:
SELECT rtrim(ltrim(regexp_substr('Attachments:Attachments~Attachment', '\:(.+)\~'),':'), '~') FROM dual;
或者
SELECT substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('Attachments:Attachments~Attachment', '\:(.+)\~') match FROM dual);
推荐阅读
- vhdl - 在 VHDL 中,在调用 stop 之前刷新输出缓冲区。或报告消息然后停止刺激器而不是完成模拟器
- excel - VBA需要添加一列来计算序列中的出现次数并在出现给定值时重置
- forms - 未处理的异常:NoSuchMethodError:在 null 上调用了方法“验证”。(FormBuilder 包)
- javascript - 画布不会出现,但会自行出现
- angular - Angular - @angular\cdk\coercion\array.d.ts(10,60): 错误 TS1005: Build:',' 预期
- r - 选择最大化相关性的样本
- amazon-vpc - 新 VPC 未显示在新 DocumentDB 集群的选择列表中
- php - 我可以将 Xdebug 存储在单独的 docker 容器中吗?
- javascript - 添加数字并得到错误的输出
- python - 任务调度程序不使用 powershell 脚本生成输出