输出结果为123456789A0001357 ;发现substr(v_i,14)截取后七位进行计算时,pl/sql会自动把字符转换成整数,把前面的lsquo;0rsqu
最近开始写存储过程,有一个需求,数据库表中有个字段(20位序列号,里面可能有字符,后7位都是数字),,要根据数量对该字段进行加计算
输出结果为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,
v1.13更新:1.增加产品讨论功能(ProductMsg备注字段)2.修正页面中的js错误数处。3.删除后的拍卖产品在回收站中统一管理。4.版面图标的DIY..自己更换,表格颜色自由调配。5.无限分类结构优化。6.产品说明支持HTML.7.网页界面优化.8.修正产品上下跳转的条数错误。9.完善邮件群发功能,可选择发送给不同类型的商城用户。10.修正拍卖信息中错误的交易完成Bug。11.去掉搜索用
发现中间多个空格,不知道什么原因。继续使用oracle 内部函数trim(exp)去掉exp两端空格
修改为:v_i := substr(v_i,1,13)||trim(to_char(substr(v_i,14)+i,'0000000'));
输出结果为:123456789A0000001357,。这是我们想要的
总结,要对oracle内部函数很熟悉啊,不过上面可能有个BUG,如果后七位产生进位,上面处理就不正确了,所有要通过业务来控制字符截取位数。










