我们知道,客户许多时候录入数据时,并不注意输入法是否是全角模式,然后就造成输入的内容,有的是全角有的是半角,造成我们做分析统计时的不便,为此,编写相应的函数。当然这个过程应尽量在前台完成,但如果针对已经存在的数据,下面提供的两个函数就比较方便了。
1、全角转换为半角函数
--© 2014,swish,原版首发:https://blog.qdac.cc/?p=1281,自由使用,保留版权 create or replace function CnFullToHalf(s character varying) returns character varying as $$ declare retval character varying; c character varying; l integer; begin l=length(s); retval=''; while l>0 loop c=left(s,1); if c=' ' then retval=retval||' '; elsif c>='!' and c<='~' then retval=retval || chr(ascii('!')+ascii(c)-ascii('!')); else retval=retval||c; end if; s=substring(s,2,l-1); l=l-1; end loop; return retval; end; $$language plpgsql immutable;
2、半角转全角
--© 2014,swish,原版首发:https://blog.qdac.cc/?p=1281,自由使用,保留版权 create or replace function CnHalfToFull(s character varying) returns character varying as $$ declare retval character varying; c integer; l integer; begin l=length(s); retval=''; while l>0 loop c=ascii(left(s,1)); if c=32 then--空格 retval=retval||' '; elsif c>=33 and c<=126 then retval=retval || chr(ascii('!')+c-ascii('!')); else retval=retval||chr(c); end if; s=substring(s,2,l-1); l=l-1; end loop; return retval; end; $$language plpgsql immutable;