oracle中是否有任何函数可以保持字符串长度固定?

时间:2017-04-26 23:54:36

标签: sql oracle

我有一个场景,比如当一个列值超过10个字符的长度时,我需要一个只有10个字符(最左边)的子字符串,但是如果它比它短,那么它应该用零填充。我尝试了以下方法:

with data1 as (select '1234567890123' as dummy1 from dual) select CASE when (length(dummy1)>10) then substr(dummy1,1,10) else lpad(dummy1,10,'0') end from data1;

但这对我来说似乎还有很长的路要走。有没有更短的方法来实现这一点,也许是Oracle功能?

我尝试使用谷歌但未找到任何相关结果。

2 个答案:

答案 0 :(得分:3)

lpad足以完成这项工作:

SELECT LPAD( '1234567890123', 10, '0' ) AS formatted FROM dual;

答案 1 :(得分:0)

只需使用SUBSTRLPAD

WITH data ( value ) AS (
  SELECT '1234567890123' FROM DUAL UNION ALL
  SELECT '1' FROM DUAL
)
SELECT LPAD( SUBSTR( value, 1, 10 ), 10, '0' ) AS formatted
FROM   data;

<强>输出

FORMATTED
----------
1234567890
0000000001