標准函數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
