一、采用函數,適用於符號比較多的情況;

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 '%(%'