字符串处理要求:
  把一切非字母数字的字符替换成“-”,例:“%$sfs #sf”替换成“sfs-sf”,“ ¥%yy-8il&%sf- ”替换成“yy-8il-sf”。注意:替换后的字符串前后不能有特殊字符,并且替换后的字符串只能包含数字,字母和“-”,并且只能以数字或字母开头和结束,相邻不能有多个“-”。我的思路是:
   用substring把字符串截取成单个字符,然后跟正则表达式比较,如果为特殊字符则替换成“-”号,然后组装成新字符串,注意每次组装钱好对新组装的字符串截取最后一个字符 看是否已经是“-”号,避免多个连续“-”号。
代码如下:
declare urlword char(255) default 'a1s 23%* k2#s- 23jsi2*! ';
declare alen int;
declare eurl char(255) default '';
declare estr char(32);
declare t int default 1;
declare elen int;
declare k int default 0;set alen = length(urlword);
repeat
set estr = substring(urlword,t,1);
select estr regexp '[a-zA-Z0-9]{1}' into k;
set t=t+1;
if k > 0 then
set eurl = concat(eurl,estr);
else 
set elen = length(eurl);
if elen > 0 then
set estr = substring(eurl,elen,1);
if estr!='-' then
set eurl = concat(eurl,'-');
end if;
end if;
end if;
until t > alen end repeat;set elen = length(eurl);                            
set estr = substring(eurl,elen,1);
if estr = '-' then                              //防止组装后最后一个字符是“-”号
set eurl = substring(eurl,1,elen-1);
end if;
我个人觉得这个算法效率不高,不知哪位高人有更好的方法,望不吝赐教! 谢谢!