一、trim
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(trim('a' from l_a));
end;
输出:baaaaabaaaab
说明从两边截取
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(trim('ab' from l_a));
end;
输出:报如下错误
ORA-30001:截取集仅能有一个字符
ORA-06512:在line 4
说明trim 截取的字符只能是单个
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(trim(leading 'a' from l_a));
end;
输出:baaaaabaaaabaaaa
说明左截取
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(trim(trailing 'a' from l_a));
end;
输出:aaaabaaaaabaaaab
说明右截取
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(trim(both 'a' from l_a));
end;
输出:baaaaabaaaab
说明从两边截取,说明默认是两边截取
二、ltrim
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(ltrim(l_a,'a'));
end;
输出:baaaaabaaaabaaaa,说明正常输出
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(ltrim(l_a,'ab'));
end;
输出为空
说明:把ab认为是一个范围,会把里面的每一个都进行匹配
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(ltrim(l_a,'ac'));
end;
输出:baaaaabaaaabaaaa
说明:如果是连续的那么就会每个字符匹配,如果不连续九认为是一个整体
declare
l_a varchar2(100) := 'aaaabaaaaabaaaabaaaa';
begin
dbms_output.put_line(ltrim(l_a,'ba'));
end;
输出为空
说明:把ba认为是一个范围,会把里面的每一个都进行匹配,不管是正序还是反序都进行匹配
三、rtrim
和ltrim一样