我想把一个字符串补足5位,前面加零

[复制链接]
查看11 | 回复3 | 2012-5-15 15:24:11 | 显示全部楼层 |阅读模式
c_No := lpad(c_No, 5-length(c_No),'00000');
为什么没有反映啊?
加零不行吗?
回复

使用道具 举报

千问 | 2012-5-15 15:24:11 | 显示全部楼层
SQL>select lpad('aa',5,'0') from dual;
LPAD(
-----
000aa
回复

使用道具 举报

千问 | 2012-5-15 15:24:11 | 显示全部楼层
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
回复

使用道具 举报

千问 | 2012-5-15 15:24:11 | 显示全部楼层
高手这么多!佩服,佩服!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行