Sql regexp\u replace/Substr在破折号前后提取字符串Oracle

Sql regexp\u replace/Substr在破折号前后提取字符串Oracle,sql,oracle,Sql,Oracle,我有一个字符串,无法提取以破折号为界的单个字符。我编写了Replace(REGEXP_SUBSTR(string,.*-[:alnum:]-'),'-'),但它没有给出预期的输出。 我需要 但是我越来越 XTT-D-X-K- RT-5- FT-5-3- 我需要添加一些我无法理解的内容。也许可以只使用regexp而不使用regexp上的replace来完成此操作。尝试使用以下方法: SELECT Replace(REGEXP_SUBSTR(str, '\-([[:alnum:]]\-)+'),

我有一个字符串,无法提取以破折号为界的单个字符。我编写了
Replace(REGEXP_SUBSTR(string,.*-[:alnum:]-'),'-')
,但它没有给出预期的输出。 我需要

但是我越来越

XTT-D-X-K-
RT-5-
FT-5-3-
我需要添加一些我无法理解的内容。也许可以只使用regexp而不使用regexp上的replace来完成此操作。

尝试使用以下方法:

SELECT Replace(REGEXP_SUBSTR(str, '\-([[:alnum:]]\-)+'), '-', ' ') as outstr
FROM (SELECT 'XTT-D-X-K-345ROCKVIEW-CA' AS str FROM dual
  UNION ALL SELECT 'RT-5-345REDE' AS str FROM dual
  UNION ALL SELECT 'FT-5-3-345HOTELWI' AS str FROM dual

几个问题-所有字符都是字母数字,或者您是否可以使用类似XTT-4-#-C-233PLANET的东西,并具有所需的输出4#C?此外,所有单个字符是否都是连续的?如果不是,如果输入是RT-3-5-INDIA-A-Z-CASH,那么输出应该是什么?@mathguy感谢您查看我的请求。所有字符都是字母数字,只有no#或其他任何字符。是的,所有字符都是单字符连续的。太棒了!那太好了!!再次感谢您的快速帮助。先生,您能告诉我反斜杠到底做了什么吗?您可以找到信息,它是转义字符-将表达式中的后续元字符视为文字。使用反斜杠()搜索通常被视为元字符的字符。使用连续的反斜杠(\)来匹配反斜杠文字本身
SELECT Replace(REGEXP_SUBSTR(str, '\-([[:alnum:]]\-)+'), '-', ' ') as outstr
FROM (SELECT 'XTT-D-X-K-345ROCKVIEW-CA' AS str FROM dual
  UNION ALL SELECT 'RT-5-345REDE' AS str FROM dual
  UNION ALL SELECT 'FT-5-3-345HOTELWI' AS str FROM dual