Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析


本文整理自网络,侵删。

SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS RES_ORDER_NO FROM DUAL

该语句拼接 时间 与 LPAD产生的 'REFUNDSEQ.NEXTVAL值的前6位有字符,如果不足6位,就用0补足' ,为防止出现重复票号增加时间 ,一天最多出现999999个有效票号

DUAL : 是oracle的虚拟表,不是真实存在的,又称ORCLE伪表,方便输出结果集
REFUNDSEQ : 这个是开发人员自己起的一个"序列"的名字,序列一般用于生成id号
REFUNDSEQ.NEXTVAL : 就是取序列的下一个值

怎么把SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS RES_ORDER_NO FROM DUAL在java中显示?

//生成交易流水号 
public String getTicketNo() throws Exception { 
 Map map = jdbcTemplate.queryForMap("SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS TICKET_NO FROM DUAL"); 
 return (String) map.get("RES_ORDER_NO"); 
} 

一 、 LPAD() 、RPAD() 函数

        * 从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以lpad就是从左边填充的意思。该函数从左边对字符串使用指定的字符进行填充。

        * 语法:LPAD( STRING, PADDED_LENGTH, [ PAD_STRING ] )

           STRING :准备被填充的字符串;

           PADDED_LENGTH :填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;

           PAD_STRING :填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。

        用例:

                   * SELECT LPAD('asdfg',10,'x') FROM DUAL;输出:'xxxxxasdfg'
                   * SELECT LPAD('ASDFG',10,'JK') FROM DUAL;输出:'JKJKJASDFG'
                   * SELECT LPAD('ASDFG',2) FROM DUAL;输出:'AS'

阅读剩余部分

相关阅读 >>

oracle 存储过程返回 结果集 table形式的案例

oracle 触发器的使用小结

详解oracle中存储函数与存储过程

oracle表空间扩容详情

oracle常用数值函数、转换函数、字符串函数

oracle数据库产重启服务和监听程序命令介绍

oracle—sql技巧之(一)连续记录查询sql案例测试

讲解oracle数据库中的数据字典及相关sql查询用法

如何保持oracle数据库的优良性能

dba 在linux下安装oracle database11g数据库图文教程

更多相关阅读请进入《oracle》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...