您正在使用IPV4(3.92.28.52)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

[公益] 节省一分零钱 献出一份爱心 温暖世间真情       【腾讯云】爆款1核2G云服务器首年48元,还有iPad Pro、Bose耳机、京东卡等你来抽!      
虚位以待
2021年 冬至节 20
2021年 圣诞节 24
2022年 元 旦 31
2022年 春 节 62
 
  • 本类新增
    本类热门文章
    您现在的位置:首页 >> 数据库 >> 内容
    Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析
    内容摘要: SELECTTO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0')ASRES_ORDER_NOFROMDUAL该语句拼接时间与LPAD产生的'REFUNDSEQ.NEXTVAL值的前6位有字符,如果不足6位,就用0补足',为防止出现重复票号增加时间,一天最多出现999999个有效票号DUAL:是ora......
    SELECTTO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0')ASRES_ORDER_NOFROMDUAL

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

    DUAL:是oracle的虚拟表,不是真实存在的,又称ORCLE伪表,方便输出结果集

    REFUNDSEQ:这个是开发人员自己起的一个"序列"的名字,序列一般用于生成id号

    REFUNDSEQ.NEXTVAL:就是取序列的下一个值

    怎么把SELECTTO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0')ASRES_ORDER_NOFROMDUAL在java中显示?

    //生成交易流水号

    publicStringgetTicketNo()throwsException{

    Mapmap=jdbcTemplate.queryForMap("SELECTTO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0')ASTICKET_NOFROMDUAL");

    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的左边粘贴空格。

    用例:

    *SELECTLPAD('asdfg',10,'x')FROMDUAL;输出:'xxxxxasdfg'

    *SELECTLPAD('ASDFG',10,'JK')FROMDUAL;输出:'JKJKJASDFG'

    *SELECTLPAD('ASDFG',2)FROMDUAL;输出:'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)其实是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。


    上一篇:mysql索引过长Specialed key was 下一篇:Oracle数据库表中字段顺序的修改方法
    发布日期:2021/11/10
    手机扫二维码直达本页
    发布时间:14:00:54
    点击:254
    录入:壹家怡园
    相关文章
    • 没有相关文章
    Baidu
    YiJiaCMS 6.0.9.10888 Build 21.11.30(MSSQL) 闽ICP备05000814号-1
    本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
    ©2000-2021