日期:2014-05-17  浏览次数:20669 次

请各位高手帮忙,数据的格式化。
我有一个记录单据号的列数据类型为VARCHAR(8),内容为00000001、00000002……,
我现在想通过存储过程在插入新记录时自动得到最后一条记录的单据号累加1得出新单据号,
v_billid:=to_char(v_billid_old+1);v_billid为新单据号,v_billid_old为上一条的单据号。
但这种方法只能只能得到一位的单据号如:3、4,所以想请问各位高手如何能够保留前面的补零,
并当单据号升位时补零自动减少,保持单据为8位。

------解决方案--------------------
给个范例:
SELECT LPAD(18, 8-LENGTH(18), '0 ') FROM DUAL;
把 18 换成 variable 就可以了
------解决方案--------------------
既使在PL/SQL中也可以用LPAD function
------解决方案--------------------
v_billid:=lpad(8,to_char(v_billid_old+1), '0 ');