标准函数Lpad 可以实现左补零,但是如果多于需要长度,则会截断字符串。
如下:
-----------------------
情况一:需要补零。
SELECT LPAD ('1234' , 5 , '0') FROM DUAL
结果:01234 正确
情况二:不需要补零。
SELECT LPAD ('123456' , 5 , '0') FROM DUAL
结果:12345 错误
-----------------------
有如下方式实现:
1 使用条件判断语句:CASE WHEN
SELECT
CASE
WHEN LENGTH(str) < 5 THEN TO_CHAR(str ,'00000')
ELSE str
END
FROM DUAL
情况一:
str:='123456'
结果:123456
情况二:结果:01234
str:='1234'
结果:01234
2 巧妙使用CONCAT 和SUBSTR 。
因为SUBSTR的开始Index超过字符串长度是,返回空字符串。 如 SUBSTR('0000' , 5),结果为:空字符串。
SELECT CONCAT(
SUBSTR('0000' , LENGTH(str)) ,
str) FROM DUAL
情况一:
str:='123456'
结果:123456
情况二:结果:01234
str:='1234'
结果:01234