利用lpad()、RPAD()函数来实现给字符串补空格或补0的功能:
一、lpad()
lpad函数将左边的字符串填充一些特定的字符其语法格式如下:lpad(string,n,[pad_string])
string:字符或者参数
n:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
pad_string:可选参数,这个字符串是要粘贴到string的左边,若这个参数未写,lpad函数将会在string的左边粘贴空格。
二、Rpad()
rpad函数将右边的字符串填充一些特定的字符其语法格式如下:rpad(string,n,[pad_string])
string:字符或者参数
n:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
pad_string:可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,lpad函数将会在string的右边粘贴空格。
具体代码示例:
补空格:
1 --Function 2 create or replace function get_FillSpaces 3 ( 4 P_String IN VARCHAR2,--传入的字串 5 P_LR IN VARCHAR2,--L为左、R为右 6 P_Length IN int--总长度 7 ) return varchar2 is 8 v_Temp varchar2(1000):=''; 9 begin 10 if lengthb(P_String)>=P_Length then 11 v_Temp:=P_String; 12 else 13 if P_LR='L' then--左补 14 v_Temp:=lpad(P_String,P_Length+(lengthb(P_String)-length(P_String))); 15 else 16 v_Temp:=RPAD(P_String,P_Length+(lengthb(P_String)-length(P_String))); 17 end if; 18 end if; 19 20 return(v_Temp); 21 22 end get_FillSpaces; 23 24 --Test 25 select get_FillSpaces('asdf中国','L',20) from dual;--返回结果:' asdf中国' 26 select get_FillSpaces('asdf中国','R',20) from dual;--返回结果:'asdf中国 '
补0:
1 --Function 2 create or replace function get_FillZero 3 ( 4 P_String IN VARCHAR2,--传入的字串 5 P_LR IN VARCHAR2,--L为左、R为右 6 P_Length IN int--总长度 7 ) return varchar2 is 8 v_Temp varchar2(1000):=''; 9 v_Name varchar2(1000):=''; 10 begin 11 --去除小数点 12 if P_String is not null then 13 v_Name:=replace(P_String,'.',''); 14 end if; 15 16 if length(v_Name)>=P_Length then 17 v_Temp:=v_Name; 18 else 19 if P_LR='L' then--左补零 20 v_Temp:=replace(lpad(v_Name,P_Length+(lengthb(P_String)-length(P_String))),' ','0'); 21 else 22 v_Temp:=replace(RPAD(v_Name,P_Length+(lengthb(P_String)-length(P_String))),' ','0'); 23 end if; 24 end if; 25 26 return(v_Temp); 27 28 end get_FillZero; 29 30 31 --Test 32 select get_FillZero('asdf中国','L',20) from dual;--返回结果:'00000000000000asdf中国' 33 select get_FillZero('asdf中国','R',20) from dual;--返回结果:'asdf中国00000000000000'
来源:https://www.cnblogs.com/AnneHan/p/4749677.html