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
三个函数组合可以实现

oracle 用SQl语句截取最后一个“\\”后面的内容
select substr('C:\\Documents and Settings\\sytl\\桌面\\各部门反馈\\条线分册-财务部.xls',instr('C:\\Documents and Settings\\sytl\\桌面\\各部门反馈\\条线分册-财务部.xls','\\',-1,1)+1) from dual 这个绝对可以!

oracle怎么截取指定字符后面的字符串,或者删除指定字符前面的字符串也...
取最后一个\\后面的字符 select substr('D:\\AssetsManagement\\resource\\ehcache\\test.txt',1+(select instr ('D:\\AssetsManagement\\resource\\ehcache\\test.txt','\\',1,(select length('D:\\AssetsManagement\\resource\\ehcache\\test.txt') - length(replace('D:\\AssetsManagement\\resource\\ehcache\\test.t...

在ORACLE中如何用SQL语句查询最后一位不是指定值的记录
select substr(id,-1,1) from biao;

SQL语句 如何取最后一次的值?[或者说如何取某个字段最大数值及其相应行...
--用如下语句即可 select z.* from z, (select a,max(b) as max_b from z group by a) z1 where z.a = z1.a and z.b = z1.max_b 但是如果出现如下情况下话,可能数据就有问题了,即第2个字段有多个相同的最大值,这个时候规则会变的复杂,如果是oracle数据库的话,可以考虑oracl...

oracle中 sql截取某个字符前面和后面的值
截取到特殊字符出现的位置。4、使用charindex()函数来返回特殊字符出现的位置,查询结果及语句。5、使用LEFT()函数和charindex()函数来从字符最左边开始到特殊字符出现的位置。6、第一个参数表示被截取的字符串,第二个参数表示要在第一个参数中开始截取的位置,第三个参数表示要截取的长度。

SQL如何截取指定字段某一个字符的前面\/后面的字符串
对于截取"."字符后面的字符串,同样使用SQL Server,只需调整SQL语句,从"."字符后一位开始取值,至字段结尾。结果为"2",长度为字段总长度减去"."字符所在位置。在Oracle数据库中,截取"."字符前面和后面的字符串的实现方式与SQL Server相似,同样需要调整SQL语句以对应不同截取需求。对于Mysql数据库...

sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗
1、首先在桌面上,点击“Management Studio”图标。2、之后在该界面中,点击左上角“新建查询”选项。3、接着在该界面中,输入截取指定字段某一个字符出现后的后面的字符串的sql语句“select substring(name,charindex(',',name)+1,len(name)-charindex(',',name)) from test2;”。4、然后在该界面...

SQL如何取出一个字符串中最后一个特殊字符右边的字符,例如:10*20*300...
reverse是把字符串倒置,然后通过charindex来获取倒置之后第一个*的位置,然后使用substring函数进行字符串截取,截取后再使用reverse倒置回来即可。以下为例子 declare @str varchar(20)set @str = '10*20*300'select reverse(substring(reverse(@str),1,charindex('*',reverse(@str)) - 1))结果是300...

查询视图A的结果合并,将最后一个字段值不同合并到一个字段中如下图所 ...
一种是修改sumstr把其它列也做为参数传入,另一种是把A对需要的列做下distinct后和上面的sql再作个join即可 如果mysql,如下 select 样本id,项目,光强度, 浓度结果,测量批号,操作者, group_concat(distinct 异常代码 order by 异常代码 separator ',') 异常代码from Agroup by 样本id,项目,光强度...

Oracle SQL 语句截取标示符后面的字符串
不清楚你想要的结果是什么,如果是第一个逗号后面的字符串,则 SELECT SUBSTR('java,cobol,c',INSTR('java,cobol,c',',')+1) from dual;得cobol,c

相似回答