oracle 用SQl语句截取最后一个“\”后面的内容

例如:file表中字段名filename的数据有:
C:\Documents and Settings\sytl\桌面\各部门反馈\条线分册-财务部.xls
C:\Documents and Settings\dell\tabledest\上报信息.doc...........
现在我要把filename内的数据全部替换为去掉路径只显示文件名,也就是说只留下
条线分册-财务部.xls
上报信息.doc
如果用sql实现不了的话可以用函数或存储过程,不过这个我不太熟请解释详细些啊,谢谢了

第1个回答  推荐于2017-11-25
select substr('C:\Documents and Settings\sytl\桌面\各部门反馈\条线分册-财务部.xls',instr('C:\Documents and Settings\sytl\桌面\各部门反馈\条线分册-财务部.xls','\',-1,1)+1) from dual

这个绝对可以!追问

太棒了 这个确实可以,但是整个表的替换怎么弄啊
select substr((select filename from file),instr((select filename from file),'\',-1,1)+1) from dual
这样不行啊,求助!!

追答

你要把表里面的数据都改成那样吗?如果是的话用
update 表名 set 字段名=substr(字段名,instr(字段名,'\',-1,1)+1) where 条件(条件为确定你要更新的那条记录)
这样就好了

本回答被提问者采纳
第2个回答  2012-04-30
TRIM(字符 FROM 字符串) 去掉字符串首尾的字符;
示例: select trim('S' from ename) from emp;
select trim('C:\Documents and Settings\sytl\桌面\各部门反馈\' from filename) from file where filename like 'C:\Documents and Settings\sytl\桌面\各部门反馈\%';
select trim('C:\Documents and Settings\dell\tabledest\' from filename) from file where filename like 'C:\Documents and Settings\dell\tabledest\%';
我已经尽力了!
第3个回答  2012-04-30
我用的是sql2000
不知道oracle 通用不,你自己测试下
select reverse(left(reverse(filename),charindex('\',reverse(filename))-1)) from file
第4个回答  2012-04-30
substr
Length
Instr
三个函数组合可以实现