declare @t table(col varchar(100))
insert into @t select 'ab/dd/u3u/kk.txt'
insert into @t select 'ab/dd/yy/ik4.txt'
insert into @t select 'ab/dd/rewew/uiy/uu/ktk.txt'
insert into @t select 'ab/csd/kk.txt'select
reverse(left(col,charindex('/',col)-1))
from
(select col=stuff(reverse(col),1,charindex('/',reverse(col)),'') from @t) a/*
col
---------
u3u
yy
uu
csd
*/
insert into @t select 'ab/dd/u3u/kk.txt'
insert into @t select 'ab/dd/yy/ik4.txt'
insert into @t select 'ab/dd/rewew/uiy/uu/ktk.txt'
insert into @t select 'ab/csd/kk.txt'select
reverse(left(col,charindex('/',col)-1))
from
(select col=stuff(reverse(col),1,charindex('/',reverse(col)),'') from @t) a/*
col
---------
u3u
yy
uu
csd
*/
解决方案 »
- 一个oracle端口问题
- 在java程序中调用oracle数据库里面存储过程时报错
- ORACLE sys和system無sysdba權限
- 求SQL(oracle数据库)
- 如何把DMP导入归属到指定用户指定的表空间呢!
- oracle 存储过程中怎么调用其他存储过程
- 这各东西有中文版的吗,谢谢大家
- 怎么把打开的游标关闭?
- 看着CSDN洋溢着新年的喜庆气氛,我也来散散分^_^
- Oracle存储过程由多个out参数,某些地方调用的时候只需要部分out返回,怎么可以少写几个参数
- 报告错误can bind a LONG value only for insert into a LONG column
- 一个关于级联表操作的简单问题????大家快帮忙阿~~~
--------------------
ab/dd/u3u/kk.txt
ab/dd/yy/ik4.txt
ab/csd/kk.txtSELECT SUBSTR(A,INSTR(A,'/',-1,2)+1,INSTR(A,'/',-1)-INSTR(A,'/',-1,2) - 1) FROM T;
表t 列的为number类型 存放的是年月日时分秒信息如下:(endTm 有可能为空)
beginTm endTm
-------------------------------
1136790278828 1138760278828
1136320278828
1131190278828 我想得到每条纪录所花的时间(即endTm 和beginTm的差值)。如果endTm 为空就取当前时间。
此外能否将这种差值转化成x d x h x m x s(多少天多少小时多少分钟多少秒多少毫秒)的格式显示
或者类似这样的格式都可以。
BEGIN
RETURN TRUNC(s/24/60/60)||'天'||TRUNC((MOD(s,24*60*60))/60/60)||'小时'||TRIM(TO_CHAR(TRUNC((MOD(s,60*60))/60),'00')) ||'分'||TRIM(TO_CHAR(MOD(s,60),'00')) ||'秒';
EXCEPTION
WHEN OTHERS THEN RETURN NULL;
END GET_STD_TIME;
/
楼上的能够求两列的时间差么?
还有第二列的时间有可能是空的.
如果是空的话我如何取当前系统时间然后在和第一列求时间差.最后用楼上的方法转换成相应的格式!
能给出更好的sql么?
谢谢!
FROM (
SELECT (NVL(TO_DATE(endTm,'YYYYMMDDHH24MISS'),SYSDATE) - TO_DATE(bgTm,'YYYYMMDDHH24MISS')) * 3600 * 24 AS s FROM T
);