在触发器写一下就OK了,很方便
begin
set NEW.NamePinYin=f_GetPY(NEW.Name);
end

 

函数 f_GetPY

BEGIN 
          declare   fpy   char(1); 
          declare   pc   char(1); 
          declare   cc   char(4); 
          DECLARE   TempWords varchar(5000);
          DECLARE   i int;
          DECLARE   reStr varchar(5000);
          set TempWords=words;
          set i=1;
          set reStr='';
          while  i <=CHAR_LENGTH(Words) do
             set   @fpy   =   UPPER(left(TempWords,1)); 
             set   @pc   =   (CONVERT(@fpy   USING   gbk)); 
             set   @cc   =   hex(@pc); 
             if   @cc   >=   "8140 "   and   @cc   <= "FEA0 "   then 
                  select   PY   into   @fpy   from   HZ2PY   where   hz>=@pc   limit   1;
             end   if; 
            set reStr=CONCAT(reStr,@fpy);
            set TempWords=substr(words from i+1 for CHAR_LENGTH(words));
            SET i=i+1;
          END WHILE;
          set @RePy=reStr;
          Return   @RePy; 
END

 

表 HZ2PY
A 驁
B 簿
C 錯
D 鵽
E 樲
F 鰒
G 腂
H 夻
J 攈
K 穒
L 鱳
M 旀
N 桛
O 漚
P 曝
Q 囕
R 鶸
S 蜶
T 籜
W 鶩
X 鑂
Y 韻
Z 咗