利用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'