去除資料中的空格

jss001發表於2009-02-26

--去除資料中的空格(>=1),用逗號替換

/*本例子針對http://www.itpub.net/showthread.php?s=&threadid=608001&perpage=10&pagenumber=1*/

create or replace function f_replace (str in varchar2) return varchar2
as
space_counter number(18,0) default 0;
str_out varchar2(2000);
begin
for i in 1..length(str) loop
if ascii(substr(str,i,1)) != 32 then
space_counter := 0;
str_out := str_out||substr(str,i,1);
else
space_counter := space_counter + 1;
if space_counter = 1 then
str_out := str_out || ',';
end if;
end if;
end loop;
return str_out;
end;
/

select f_replace(ltrim(rtrim(' aa bb cc dd ee '))) from dual;

select 'aa'||chr(32)||chr(32)||'bb'||chr(32)||chr(32)||chr(32)||'cc' from dual;

select f_replace(ltrim(rtrim(chr(32)||'aa'||chr(32)||chr(32)||'bb'||chr(32)||chr(32)||chr(32)||'cc'||chr(32)||chr(32)) ))from dual;

為了簡化函式內容,沒有把trim加入函式內,有興趣的朋友可以考慮把trim功能提入函式中,這樣就可以簡化使用。

如果是oracle10g以上版本,用正規表示式是比較簡潔的。

SELECT REGEXP_REPLACE('坐火車 去 西藏 玩 看 秀麗 山川','( ){2,}',',')

[@more@]

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

相關文章