一、采用函数,适用于符号比较多的情况;

1 --全角到半角转换函数 2 create or replace function CnFullToHalf(s character varying) 3 returns character varying 4 as 5 $$ 6 declare 7 retval character varying; 8 c character varying; 9 l integer; 10 11 begin 12 l=length(s); 13 retval=''; 14 while l>0 loop 15 c=left(s,1); 16 if c=' ' then -- 全角空格 17 retval=retval||' '; 18 elsif c>='!' and c<='~' then -- 全角!到~的范围 19 retval=retval || chr(ascii('!')+ascii(c)-ascii('!')); 20 else 21 retval=retval||c; 22 end if; 23 s=substring(s,2,l-1); 24 l=l-1; 25 end loop; 26 return retval; 27 end; 28 $$language plpgsql strict immutable;
原文 :[PostgreSQL]全角和半角字符转换函数 – QDAC数据访问组件网站
二、采用REPLACE函数,适用符号较少的情况 ;
update client set name=replace(name,'(','(') update client set name=replace(name,')',')') --将全角括号 替换成 半角的;
三、找出有重复的进行删除 ;
select 'delete from client where name='''||name||''';' from client where replace(name,'(','(') in (select name from client) and name like '%(%'
select 'delete from client where name='''||name||''';' from client where replace(replace(name,'(','('),')',')') in (select name from client) and name like '%(%'