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

 更新时间:2017年10月27日 11:17:14   作者:乘风晓栈  
这篇文章主要介绍了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()简介等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • oracle中文乱码解决的办法

    oracle中文乱码解决的办法

    oracle中文乱码解决的办法,需要的朋友可以参考一下
    2013-02-02
  • Oracle中pivot函数图文实例详解

    Oracle中pivot函数图文实例详解

    pivot操作是一种数据处理方法,可以将一个表中的行数据转换为列数据,这种转换对于表格数据的分析和展示非常有用,下面这篇文章主要给大家介绍了关于Oracle中pivot函数的相关资料,需要的朋友可以参考下
    2023-05-05
  • ORACLE应用经验(1)

    ORACLE应用经验(1)

    ORACLE应用经验(1)...
    2007-03-03
  • zabbix监控oracle表空间的操作方法

    zabbix监控oracle表空间的操作方法

    Zabbix是一款开源的网络监控和管理系统,可以用于监控各种网络设备、服务器和应用程序等,本文给大家介绍了zabbix监控oracle表空间的操作方法,并通过代码示例和图文讲解的非常详细,需要的朋友可以参考下
    2024-04-04
  • oracle分区索引的失效和重建代码示例

    oracle分区索引的失效和重建代码示例

    这篇文章主要介绍了oracle分区的失效和重建代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • Oracle数据库并行查询出错的解决方法

    Oracle数据库并行查询出错的解决方法

    这篇文章主要介绍了Oracle数据库并行查询出错的解决方法,需要的朋友可以参考下
    2014-07-07
  • Oracle数据库下载与安装的完整步骤

    Oracle数据库下载与安装的完整步骤

    这篇文章主要给大家介绍了关于Oracle数据库下载与安装的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Oracle 函数大全

    Oracle 函数大全

    小编为大家整理了 Oracle 常用的函数,大家可以参考一下,希望对大家有所帮助。
    2016-05-05
  • oracle临时表空间的作用与创建及相关操作详解

    oracle临时表空间的作用与创建及相关操作详解

    Oracle可能会需要使用到一些临时存储空间,用于临时保存解析过的查询语句以及在排序过程中产生的临时数据,下面这篇文章主要给大家介绍了关于oracle临时表空间的作用与创建及相关操作的相关资料,需要的朋友可以参考下
    2022-07-07
  • 查询Oracle数据库表是否被锁的实现方式

    查询Oracle数据库表是否被锁的实现方式

    本文介绍了查询Oracle数据库表是否被锁的方法,包括查询锁表的会话、人员信息,根据object_id查询表名,以及根据会话ID查询和停止本地进程,同时,还提到在尝试加锁之前判断记录是否已经被锁定,以避免锁定已锁定的记录
    2025-02-02

最新评论