--去除数据中的空格(>=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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/18921899/viewspace-1017069/