删除字符串首尾的空白(可以首尾一起,也可以指定首或尾,取决于控制参数),但会保留字符串内部作为词与词之间分隔的空格。
各种
trim
函数的语法如下:
LTRIM(字串):将字串左边的空格移除。
RTRIM(字串):
将字串右边的空格移除。
TRIM(字串):
将字串首尾两端的空格移除,作用等于RTRIM和LTRIM两个函数共同的结果。
ALLTRIM(字串):将字串左右边两边的空格移除。
例1:
TRIM('
Sample
');
结果:
'Sample'
例2:
LTRIM('
Sample
');
结果:
'Sample
'
例3:
RTRIM('
Sample
');
结果:
'
Sample'
ALLTRIM("
Sample
")
结果:
"Sample"
在oracle中,trim()函数的用法有,leading
开头字符,trailing
结尾字符,both
开头和结尾字符,如下:
trim(leading
||
trailing
||
both
'将要被替换掉的字符"
from
“将要被替换的字符串")
1、trim函数去除指定的开头字符
select
trim(leading
'x'
from
'xday')
as
strTemp
from
tableName
;
2、trim函数去除指定的结尾字符
select
trim(trailing
'x'
from
'dayx')
as
strTemp
from
tableName
;
3、trim函数去除指定的首部和尾部字符
select
trim(both
'x'
from
'xdayx')
as
strTemp
from
tableName
;
4、默认情况下,trim函数会去除首部和尾部,被指定的字符
select
trim('x'
from
'xdayx')
as
strTemp
from
tableName
;
5、如果没有指定被移除的字符,则会默认去除首部和尾部的空格
select
trim('
day
')
as
strTemp
from
tableName
;
SELECT ggname,NVL(音乐,0)音乐,NVL(美术,0)美术,NVL(数学,0)数学 FROM (
SELECT ggggname,ggkcn,ggcj FROM gg)
pivot(SUM(cj) FOR kcn IN('音乐'音乐,'美术'美术,'数学'数学))
--其他科目自己添加
废话不多说了,直接给大家贴代码了,具体代码如下所示:
create
or
replace
procedure
PROC_test
is
--Description:删除字段中的指定字符(回车chr(13)、换行chr(10))
--By
LiChao
--Date:2016-03-01
colname
varchar(20);
--列名
cnt
number;
--包含换行符的列的行数
v_sql
varchar(2000);
--动态SQL变量
begin
--读取表中的列
for
col
in
(select
column_name
from
user_tab_columns
where
table_name
=
'TEMP')
loop
colname
:=
colcolumn_name;
--替换换行符chr(10)
v_sql
:=
'select
count(1)
from
temp
where
instr('
||
colname
||
',chr(10))>0
';
EXECUTE
IMMEDIATE
V_SQL
into
cnt;
if
cnt
>
0
then
v_sql
:=
'update
temp
set
'
||
colname
||
'=trim(replace('
||
colname
||
',chr(10),''''))'
||
'where
instr('
||
colname
||
',chr(10))>0
';
EXECUTE
IMMEDIATE
V_SQL;
commit;
end
if;
--替换回车符chr(13)
v_sql
:=
'select
count(1)
from
temp
where
instr('
||
colname
||
',chr(13))>0
';
EXECUTE
IMMEDIATE
V_SQL
into
cnt;
if
cnt
>
0
then
v_sql
:=
'update
temp
set
'
||
colname
||
'=trim(replace('
||
colname
||
',chr(13),''''))'
||
'where
instr('
||
colname
||
',chr(13))>0
';
EXECUTE
IMMEDIATE
V_SQL;
commit;
end
if;
--替换'|'
chr(124)
为''
chr(42)
v_sql
:=
'select
count(1)
from
temp
where
instr('
||
colname
||
',chr(124))>0
';
EXECUTE
IMMEDIATE
V_SQL
into
cnt;
if
cnt
>
0
then
v_sql
:=
'update
temp
set
'
||
colname
||
'=replace('
||
colname
||
',chr(124),chr(42))'
||
'where
instr('
||
colname
||
',chr(124))>0
';
EXECUTE
IMMEDIATE
V_SQL;
commit;
end
if;
end
loop;
end
PROC_test;
/
以上所述是小编给大家介绍的Oracle删除字段中的空格、回车及指定字符的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果to_char的前面的参数的长度和后面参数的长度不一致,就会出现空格,这种情况下:
可以通过oracle的trim方法来删除前面出现的空格。
sql:
select to_char('11111','999999') from dual;
执行结果:“ 11111”;
select trim(to_char('11111','999999')) from dual;
执行结果:“11111”。
1、创建测试表,
create table test_huiche(id varchar2(20), value varchar2(20));
2、插入测试数据,部分值含回车换行符;
insert into test_huiche values(1, 'ab
c');
insert into test_huiche values(2,'ed');
insert into test_huiche values(3,'ffg');
insert into test_huiche values(4,'hj
k');
commit;
3、查询表中全量数据,可以发现部分值含回车换行符;select t, rowid from test_huiche t;
4、编写语句,去掉数据后的回车换行符;
select tid, replace(replace(tvalue,chr(9),''),chr(10),'') as value from test_huiche t;
不会自动去掉的,如果想要去掉可以使用以下的方法:
insert into 表名 (列名) values (replace(列值, chr(32), ''));
chr(32)是空格的意思,因为空格的ascii码是32
同样,如果要去回车或其他特殊字符的话只需要吧chr中的数字改成对应的ascii码即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)