首先在“ - ”Dash之后提取文本

时间:2013-06-04 16:24:32

标签: oracle

我需要在第一个破折号之后从字符串的开头提取一个子字符串到6个字符,但是在第二个破折号处停止。 有:

X13-145222-2    
X13X1-125256    
X13DD1-045455-5 

通缉:

X13-145222
X13X1-125256
X13DD1-045455

2 个答案:

答案 0 :(得分:1)

所以你想要从字符串的开头到第一个连字符后的第6个字符的所有内容吗?

这应该有效。如果可以使用不带连字符的字符串,则需要使其更复杂,但是您的示例意味着总是至少有一个。

SUBSTR( string, 1, INSTR( string, '-') + 6 )

答案 1 :(得分:1)

regexp_replace(string, '^((.*?)-(.*?))-.*$', '\1')

fiddle