在特定字符之前获取字符串

时间:2020-07-23 11:43:07

标签: sql oracle

我有一个查询,该查询以以下格式返回目标名称: Database_hostname_instance 我只需要从中提取以下部分: 数据库主机名 为此,我尝试使用下面的方法,但是它在字符串'Database'之前给出了字符串,例如'Database regexp_substr(target_name,'^ [^ ] +')

能否请您提出从结尾处第一次出现“ _”的字符串。谢谢。

2 个答案:

答案 0 :(得分:2)

如果总是有两个下划线,则可以使用:

select regexp_replace('Database_hostname_instance', '_[^_]*$', '')
from dual

这使最后一个下划线及其后的所有内容失去了作用。

答案 1 :(得分:1)

您还可以使用INSTR功能

select 'Database_hostname_instance', substr('Database_hostname_instance', 0, 
instr('Database_hostname_instance', '_', -1)-1)
from dual;