首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle SQL:使用REGEXP_SUBSTR提取特定单词之前的文本

Oracle SQL:使用REGEXP_SUBSTR提取特定单词之前的文本
EN

Stack Overflow用户
提问于 2018-10-16 23:23:16
回答 2查看 269关注 0票数 0

使用Oracle sql,我希望提取某些单词之前的文本。我需要排除以单词"exceed“或"max”开头和之后的文本。

例如:“服用1-2片4-6小时,每天不要超过5片”

期望的输出:“拿1-2个标签4-6个小时。不要”

EN

回答 2

Stack Overflow用户

发布于 2018-10-16 23:27:27

我在考虑使用substr()regexp_instr(),而不是直接使用regexp_substr()

代码语言:javascript
运行
复制
select x.*,
       substr(str, 1, regexp_instr(str || 'max', 'exceed|max') - 2)
from (select 'Take 1-2 tabs 4-6 hours. Do not exceed 5 tabs per day' as str from dual) x
票数 0
EN

Stack Overflow用户

发布于 2018-10-17 14:52:02

我通过使用嵌套的regexp_substr()获得了所需的输出,如下所示:

代码语言:javascript
运行
复制
select trim(regexp_substr(
    regexp_substr('Take 1-2 tabs 4-6 hours. Do not exceed 5 tabs per day','.*(exceed|max)'),
    '.*[^(exceed|max)]'
  )) desired_output
from dual;

但是如果你需要在“超过”或“最大值”前加上空格,只需删除trim()即可。

参考:https://www.techonthenet.com/oracle/functions/regexp_substr.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52838913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档