【問題處理】使用trim和 replace處理字串中的換行符號

secooler發表於2010-03-24
如果查詢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與字元的對應關係如下圖所示
【問題處理】使用trim和 replace處理字串中的換行符號
5.小結
在初始化資料的時候很容易在字串的尾部誤新增換行符號,使用文中介紹的方法可以方便快速的達到去除換行符或回車符的目的。
想一想,還有沒有其他去除換行符或回車符的方法。

Good luck.

secooler
10.03.24

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-630336/,如需轉載,請註明出處,否則將追究法律責任。

相關文章