首页 > 技术文章 > PGSQL 转换全角到半角方法

lrzy 2022-03-17 13:35 原文

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

 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;
View Code

原文 :[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 '%(%'

 

推荐阅读