删除PL/SQL中特定字符后的所有字符

san*_*ndy 5 sql oracle plsql substr oracle9i

如何从此示例值中获取子字符串:

 john.abc_1234
Run Code Online (Sandbox Code Playgroud)

我希望它返回john.abc.所以基本上我们需要删除之后的所有信息_.

更多例子:1234_abc

Adr*_*iro 19

你可以使用SUBSTRINSTR:

select substr('john.abc_1234', 1, instr('john.abc_1234', '_') -1)
from dual
Run Code Online (Sandbox Code Playgroud)

警告:只有当您的字符串中实际包含下划线时,才能保证此功能

更新

此外,如果您从Oracle 10g开始运行,则可以使用Regex路径,这将更有效地处理异常.

以下是有关如何在Oracle中执行此操作的一些链接:

  • 为了有一个正则表达式的例子,这里有一个正则表达式的方法:`select regexp_substr('john.abc_1234','[^ _]*')来自dual;`它假设你想要保持所有直到第一个下划线. (2认同)