我正在使用Oracle 11G并且我有以下字符串:I - Am in- Need Help- Please
并且想要使用-
字符解析字符串,然后选择第二个对象之后的所有字符串。我一直在玩REGEXP_REPLACE
和SUBSTR
,我可以选择第二个对象,但似乎无法选择第二个对象之后的所有内容。我知道我需要在某个地方添加一个*,但我似乎无法使语法正确。任何帮助将不胜感激。
SELECT REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '[^-]+' , 1, 2)
FROM DUAL;
上面的查询返回第二个对象'Am in',但我希望这返回'需要帮助 - 请'。同样重要的是要注意,我不希望-
字符直接跟在结果中的第二个对象之后,但我想从第三个对象开始。
答案 0 :(得分:2)
由于[^-]
仅匹配非连字符,因此匹配组将在第一个连字符后开始,然后在下一个连字符之前停止。要捕获第一个连字符后的所有内容,请尝试:
SELECT REGEXP_REPLACE(REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '-.+' , 1), '-', '', 1, 1) FROM DUAL;