【发布时间】:2022-01-19 16:49:10
【问题描述】:
我有以下字符串011/2020-PL00-70-31(它可能略有不同,例如011/2020-PL00-70-3 或011/2020-PL00-70-310)。我需要从字符串中提取最后一个- 之前的所有字符串。由于REGEXP_SUBSTR 的011/2020-PL00-70-310 我只需要得到011/2020-PL00-70,即没有最后4 个符号(但在某些情况下它可能没有2 或3 个符号)。
我是 PL SQL 中的正则表达式的新手,如果这么简单,很抱歉。
非常感谢。
【问题讨论】:
-
你可以试试
REGEXP_REPLACE(whatever, '(-[^-]+)$', '')。 -
表达式
REGEXP_REPLACE(whatever, '(-[^-]+)$')找到-31,但不删除。我无法申请replace,因为字符串中可能还有-31的匹配项。 -
它应该找到一个减号,后跟至少一个非减号 - 但 only 在字符串的 end (
$!) ,因此任何中间事件都应保持不变。 -
@Aconcagua,请发表您的评论作为答案。这是正确的解决方案。
-
@AnkitBajpai 已添加 - 之前没有发布,因为我没有测试过......
标签: sql oracle regexp-substr