Welcome 微信登录

首页 / 数据库 / MySQL / Oracle字符串中数字处理

最近开始写存储过程,有一个需求,数据库表中有个字段(20位序列号,里面可能有字符,后7位都是数字),要根据数量对该字段进行加计算
  1. declare    
  2.   i integer :=123; --增量   
  3.   v_i varchar2(25) :="123456789A0000001234";--序列号   
  4. begin   
  5.   dbms_output.enable; --设置输出   
  6.   v_i :=substr(v_i,1,13)||(substr(v_i,14) + i - 1);   
  7.   dbms_output.put_line(v_i);  
输出结果为123456789A0001357 ; 发现substr(v_i,14)截取后七位进行计算时,pl/sql会自动把字符转换成整数,把前面的‘0’去掉了。研究Oracle内部函数,发现有个函数可以进行格式转换成字符串 to_char(exp,"reg") exp为要转换的数字等,reg为转换格式修改v_i := substr(v_i,1,13)||to_char(substr(v_i,14)+i,"0000000");--reg为7个‘0’,如果要保持位数的正确,前面补‘0’输出结果为:123456789A000 0001357,发现中间多个空格,不知道什么原因。继续使用oracle 内部函数trim(exp)去掉exp两端空格修改为:v_i := substr(v_i,1,13)||trim(to_char(substr(v_i,14)+i,"0000000")); 输出结果为:123456789A0000001357,。这是我们想要的总结,要对oracle内部函数很熟悉啊,不过上面可能有个BUG,如果后七位产生进位,上面处理就不正确了,所有要通过业务来控制字符截取位数。Oracle中DDL和DML指什么?Oracle中type is table 类型删除相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数