"CON-2008-08-05-351"
上面的字符串为文件编号,以"CON-"+"当前日期-"+"三位编码"作为命名格式,最后三位是顺延的自动编号。
表里已经有编码,要判断,编号的命名规则为:如果今天没有文件,那就从001开始,如果今天有文件进表,则最后三位自增1
请问,如何用一个语句实现?
谢谢!
上面的字符串为文件编号,以"CON-"+"当前日期-"+"三位编码"作为命名格式,最后三位是顺延的自动编号。
表里已经有编码,要判断,编号的命名规则为:如果今天没有文件,那就从001开始,如果今天有文件进表,则最后三位自增1
请问,如何用一个语句实现?
谢谢!
解决方案 »
- Windows XP下安装的Oracle11g2R,网址:https://localhost:1158/em,打不开?
- oracle分页查询报错,FROM关键字未找到!求帮助!
- 求助:oracle中REGEXP_REPLACE的写法
- Oracle 命令未正确结束
- contains查询不出来结果
- oracle8i的数据库备份导入到oracle9i的服务器中,会遇到什么问题吗?是否可行?
- 谁能帮我把一SQL的trigger转换成ORACLE的,小弟在此先谢谢了!!!!!!!!!
- 各位大哥知道那里有oracle 8.0.4 或 oracle 8.0.5 的下载吗?
- 偶想学好Oracle开发,请问有哪些好书?重分相谢!
- 对于日期时间型数据,我能以某种指定格式来进行存储吗?
- ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","insert into AppLog nolo...","sql area","kglhin: temp")
- 关于通过OCI操作Oracle10g经常出错的问题,请大侠帮忙,非常感谢!
+ right(('000'+convert(varchar(3),convert(numeric,tb.bm) +1)),3)
+ right(('000'+convert(varchar(3),convert(numeric,tb.bm) +1)),3)红色部分是oracle提示missing expression,如何处理?
(
t_id char(18)
)insert into YourTableName values('CON-2008-07-07-001');
insert into YourTableName values('CON-2008-08-08-001');
insert into YourTableName values('CON-2008-08-05-001');
select 'CON-'||TO_char(sysdate,'YYYY-MM-DD')||'-'
||decode(sign(count(*)),0,'001',trim(to_char(to_number(substr(max(t_id),16,3))+1,'000')))
from YourTableName
where substr(t_id,5,10) = to_char(sysdate,'YYYY-MM-DD');--结果:
CON-2008-08-05-002select 'CON-'||TO_char(sysdate-1,'YYYY-MM-DD')||'-'
||decode(sign(count(*)),0,'001',trim(to_char(to_number(substr(max(t_id),16,3))+1,'000')))
from YourTableName
where substr(t_id,5,10) = to_char(sysdate-1,'YYYY-MM-DD');--结果:
CON-2008-08-04-001
from YourTableName
where substr(t_id,5,10) = to_char(sysdate,'YYYY-MM-DD')
如下方法效率更高:
SELECT 'CON-' || TO_CHAR(SYSDATE, 'YYYY-MM-DD') || '-' ||
DECODE(SIGN(COUNT(1)),
0,
'001',
LPAD(TO_NUMBER(SUBSTR(MAX(T_ID), 16, 3)) + 1, 3, '0')) SID
FROM YOURTABLENAME
WHERE T_ID LIKE 'CON-' || TO_CHAR(SYSDATE, 'YYYY-MM-DD') || '-%';
请教:偶写到复杂的sql语句就荤菜,有没有什么资料供学习呢?谢谢!