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
10if lengthb(P_String)>=P_Length then
11    v_Temp:=P_String;
12else
13if P_LR='L' then--左补
14      v_Temp:=lpad(P_String,P_Length+(lengthb(P_String)-length(P_String)));
15else
16      v_Temp:=RPAD(P_String,P_Length+(lengthb(P_String)-length(P_String)));
17    end if;
18  end if;
19
20return(v_Temp);
21
22 end get_FillSpaces;
23字符串长度0到59
24 --Test
25select get_FillSpaces('asdf中国','L',20) from dual;--返回结果:'              asdf中国'
26select 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  --去除⼩数点
12if P_String is not null then
13    v_Name:=replace(P_String,'.','');
14  end if;
15
16if length(v_Name)>=P_Length then
17    v_Temp:=v_Name;
18else
19if P_LR='L' then--左补零
20      v_Temp:=replace(lpad(v_Name,P_Length+(lengthb(P_String)-length(P_String))),'','0');
21else
22      v_Temp:=replace(RPAD(v_Name,P_Length+(lengthb(P_String)-length(P_String))),'','0');
23    end if;
24  end if;
25
26return(v_Temp);
27
28 end get_FillZero;
29
30
31 --Test
32select get_FillZero('asdf中国','L',20) from dual;--返回结果:'00000000000000asdf中国' 33select get_FillZero('asdf中国','R',20) from dual;--返回结果:'asdf中国00000000000000'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。