c_No := lpad(c_No, 5-length(c_No),'00000');
lpad (char1,n,char2)
在字符串1 的左边 填充字符串2直至长度为 n
因此 应该写为
if length(c_no) select lpad('asdafaf', 5, '0') from dual;
LPAD('ASDAFAF',5,'0')
---------------------
asdaf
SQL> select substr('asdafaf', -5) from dual;
SUBSTR('ASDAFAF',-5)
--------------------
dafaf
如果这个字符串长度超过5位,使用这两种方法会得到不同的结果。
假设要求为:如果在这个字符串超过5位的情况下,返回结果是原字符串;字符串不到5位的情况下,前面补足0。
一个方法:
SQL> select lpad('asdafaf', decode(sign(length('asdafaf')-5), 1, length('asdafaf'), 5), '0') from dual;
LPAD('ASDAFAF',DECODE(SIGN(LEN
------------------------------
asdafaf
SQL> select lpad('asd', decode(sign(length('asd')-5), 1, length('asd'), 5), '0') from dual;
LPAD('ASD',DECODE(SIGN(LENGTH(
------------------------------
00asd
|