MYSQL 中取拼音首字母的函数

今天碰到了取拼音首字母的需求。整理了一下。
1、编码表:

/*DDL Information For - test.cs_char2letter*/
------------------------------------------------------

Table           Create Table                                
--------------  ---------------------------------------------
cs_char2letter  CREATE TABLE `cs_char2letter` (             
                  `PY` char(1) character set utf8 NOT NULL, 
                  `HZ` char(1) NOT NULL default '',         
                  PRIMARY KEY  (`PY`)                       
                ) ENGINE=InnoDB DEFAULT CHARSET=gbk   
 

2、记录信息:

query result(23 records)

PYHZ
A
B簿
C
D
E
F
G
H
J
K
L
M
N
O
P
Q
R
S
T
W
X
Y
Z

3、取拼音首字母的函数:
DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`func_get_first_letter`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_first_letter`(
 words   varchar(255)) RETURNS  char(1) CHARSET utf8
BEGIN  
  declare fpy char(1);  
  declare pc char(1);  
  declare cc char(4);  
  set @fpy = UPPER(left(words,1));  
  set @pc = (CONVERT(@fpy   USING   gbk));  
  set @cc = hex(@pc);  
  if @cc >= "8140" and @cc <="FEA0" then 
    begin  
      select PY from cs_char2letter where hz>= @pc limit 1 into @fpy;
    end;  
  end   if;  
  Return   @fpy;  
  END$$

DELIMITER ;

4、测试结果:


select func_get_first_letter('我是月亮'),func_get_first_letter('月亮是我'),func_get_first_letter('他爸也是我');

query result(1 records)

func_get_first_letter('我是月亮')func_get_first_letter('月亮是我')func_get_first_letter('他爸也是我')
WYT
5、附上表插表语句:
truncate table cs_char2letter;
set names utf8;
insert into cs_char2letter values
('A','骜'),
('B','簿'),
('C','错'),
('D','�'),
('E','�'),
('F','鳆'),
('G','�'),
('H','�'),
('J','�'),
('K','�'),
('L','�'),
('M','�'),
('N','�'),
('O','沤'),
('P','曝'),
('Q','�'),
('R','�'),
('S','�'),
('T','箨'),
('W','鹜'),
('X','�'),
('Y','韵'),
('Z','�');

本文出自 “上帝,咱们不见不散!” 博客,转载请与作者联系!

转载于:https://my.oschina.net/u/585111/blog/219492

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值