我们知道,客户许多时候录入数据时,并不注意输入法是否是全角模式,然后就造成输入的内容,有的是全角有的是半角,造成我们做分析统计时的不便,为此,编写相应的函数。当然这个过程应尽量在前台完成,但如果针对已经存在的数据,下面提供的两个函数就比较方便了。
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;
