oracle rpad mysql_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'

* RPAD() 函数从右边对字符串使用指定的字符进行填充,语法格式与LPAD格式相同:

RPAD('DEMO', 7); 将返回'DEMO '

RPAD('DEMO', 2); 将返回'DE'

RPAD('DEMO', 8, '0'); 将返回'tech0000'

RPAD('DEMO', 4, 'M'); 将返回 'DEMO'

RPAD('DEMO', 5, 'M'); 将返回 'DEMOM'

拼接——流水号,时间,单号:LPAD(流水号 || 时间,6,'0')

二 、 NEXTVAL()  函数

* 序列名.NEXTVAL :调用NEXTVAL将生成序列中的下一个序列号,调用时要指出序列名(第一次调用该方法值为10,第二次调用为11,第三次调用为12,依次递增)。

* 在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。

总结

以上就是本文关于Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:oracle中length、lengthb、substr、substrb函数用法介绍、oracle求字符串长度函数length()和hengthb()简介等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值