Oracle 在“第一个”之后提取文本-&引用;猛冲

Oracle 在“第一个”之后提取文本-&引用;猛冲,oracle,Oracle,我需要从字符串的开头提取一个子字符串,在第一个破折号后提取6个字符,但在第二个破折号处停止。 拥有: 通缉: X13-145222 X13X1-125256 X13DD1-045455 那么您想要从字符串开头到第一个连字符后的第6个字符的所有内容 这应该行得通。如果可以使用不带连字符的字符串,则需要将其变得更复杂,但您的示例暗示至少会有一个 SUBSTR( string, 1, INSTR( string, '-') + 6 ) “…但在第二个破折号处停止…”这是否意味着第二个破折号可以出现

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

通缉:

X13-145222
X13X1-125256
X13DD1-045455

那么您想要从字符串开头到第一个连字符后的第6个字符的所有内容

这应该行得通。如果可以使用不带连字符的字符串,则需要将其变得更复杂,但您的示例暗示至少会有一个

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

“…但在第二个破折号处停止…”这是否意味着第二个破折号可以出现在第一个破折号后的七个字符之前?是否允许使用计算列?在第一个连字符后的字符串部分添加一个,然后在第二个连字符前添加余数的一部分。
SUBSTR( string, 1, INSTR( string, '-') + 6 )
regexp_replace(string, '^((.*?)-(.*?))-.*$', '\1')