返回特定值后的所有内容

时间:2013-08-09 20:36:06

标签: sql oracle

使用10g。

我尝试编写一个正则表达式,在第一个短划线( - )之前删除所有内容。

但是,我没有预料到语法的复杂性。

我有这个:

REGEXP_SUBSTR (myVal, '[^"]+')

这会在第一次双引号后删除所有值,并留下如下数据:

10-3/4, 5-1/2, 7-5/8

我认为将双引号更改为破折号并将破折号放在破折号之后就可以了,但没有运气。

2 个答案:

答案 0 :(得分:0)

如果您只需要这样做,那么您不需要使用REGEX,因为您可以使用其他更简单的功能:

SELECT SUBSTRING(myVal,INSTR(myVal,'-'),LENGTH(myVal))
FROM YourTable

答案 1 :(得分:0)

如果您想使用REGEXP_SUBSTR执行此操作,请尝试以下操作:

SELECT REGEXP_SUBSTR(myValue, '\-.*$')
FROM myTable

但是,来自Lamak的SUBSTR答案同样有效。第三个SUBSTR参数默认为字符串的长度,因此您可以将其关闭:

SELECT SUBSTR(myValue, INSTR(myValue, '-'))
FROM myTable