如果查询ASCII码表,10代表的是换行符(^J),13代表的是回车符(^M),据此再结合Oracle的trim函数或replace函数便可达到删除字符串中的换行或回车字符的目的。
1.创建表T,初始化四条数据
1)创建表T
sec@ora10g> create table t (x varchar2(10));
Table created.
2)插入一条不包含换行的字符串
sec@ora10g> insert into t values ('secooler');
1 row created.
3)插入一条结尾处包含一个换行符的字符串
sec@ora10g> insert into t values ('secooler
2 ');
1 row created.
4)插入一条首尾均包含一个换行符的字符串
sec@ora10g> insert into t values ('
2 secooler
3 ');
1 row created.
5)插入一条中间包含一个换行符的字符串
sec@ora10g> insert into t values ('sec
2 ooler');
1 row created.
sec@ora10g> commit;
Commit complete.
2.查看T表中的数据
为清楚的看到字符串中的换行我们在字符串的两边分别加一个星号“*”
sec@ora10g> select '*'||x||'*' str from t;
STR
----------------------------------------
*secooler*
*secooler
*
*
secooler
*
*sec
ooler*
3.使用trim函数和replace函数处理换行符
1)如果是字符串头和尾部存在换行,可以使用trim函数来处理
效果如下:
sec@ora10g> select '*'|| trim (chr(10) from x) ||'*' str_trim from t;
STR_TRIM
----------------------------------------------------
*secooler*
*secooler*
*secooler*
*sec
ooler*
2)如果想要删除字符串中所有出现的换行可以使用replace函数
效果如下:
sec@ora10g> select '*'||replace(x,chr(10),'')||'*' str_replace from t;
STR_REPLACE
----------------------------------------------------
*secooler*
*secooler*
*secooler*
*secooler*
OK,所有的换行都被处理掉了。
BTW:如果字符串中包含有回车符,可以将上例中的chr(10)替换为chr(13)。
4.ASCII与字符的对应关系如下图所示
5.小结
在初始化数据的时候很容易在字符串的尾部误添加换行符号,使用文中介绍的方法可以方便快速的达到去除换行符或回车符的目的。
想一想,还有没有其他去除换行符或回车符的方法。
Good luck.
secooler
10.03.24
-- The End --