Oracle 給字符串補空格、補0


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM