来个大佬看下 oracle 怎么截取一个字段的从右边数第一个空格或者特殊字符(两者情况事先不知道)的右边所有内容?

比如有一个字符: '123 456 你好' 或者是 '123_456_你好'
想要得到 '你好' sql怎么写
select '123_456_你好' from dual /
select '123 456 你好' from dual

如果确定是特殊字符或者空格我用截取可以,但是这个字符不确定是_还是空格 ,sql该怎么写(只确定会有_或者空格,不知道有几个_几个空格,也不知道是否有_是否有空格)

select substr('123_456_你好',(instr('123_456_你好', '_', -1, 1) +1),length('123_456_你好')) from dual; --你好

先判断是否有空格吗,还是怎么说,或者事先,先强制转换空格为下划线?

请教各位大神

阅读 1.9k
1 个回答

测试后先替换可以:
select substr(REPLACE('123 456_你好',' ','_'),(instr(REPLACE('123 456_你好',' ','_'), '_', -1, 1) +1),
length(REPLACE('123 456_你好',' ','_'))) from dual; --你好

请教有没有其他更好的方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题