mysql 根据英文进行汉字首字母检索


关键函数:
left(x)返回字符串s的前n个字符;
HEX(x) 返回x的十六进制编码;
CONV(x,f1,f2) 返回f1进制数变成f2进制数;
 
首先:
建一个拼音表 t_cosler ,存放每个字母开头的第一个汉字的编号和最后一个汉字的编号。
create table t_cosler (
f_PY char primary key,
cBegin SMALLINT UNSIGNED not null,
cEnd SMALLINT UNSIGNED not null
);
 
insert into t_cosler values
('A',0xB0A1,0xB0C4),
('B',0xB0C5,0xB2C0),
('C',0xB2C1,0xB4ED),
('D',0xB4EE,0xB6E9),
('E',0xB6EA,0xB7A1),
('F',0xB7A2,0xB8C0),
('G',0xB8C1,0xB9FD),
('H',0xB9FE,0xBBF6),
('J',0xBBF7,0xBFA5),
('K',0xBFA6,0xC0AB),
('L',0xC0AC,0xC2E7),
('M',0xC2E8,0xC4C2),
('N',0xC4C3,0xC5B5),
('O',0xC5B6,0xC5BD),
('P',0xC5BE,0xC6D9),
('Q',0xC6DA,0xC8BA),
('R',0xC8BB,0xC8F5),
('S',0xC8F6,0xCBF9),
('T',0xCBFA,0xCDD9),
('W',0xCDDA,0xCEF3),
('X',0xCEF4,0xD188),
('Y',0xD1B9,0xD4D0),
('Z',0xD4D1,0xD7F9);
 
 
 
使用拼音表t_cosler 与 要查询的目标表 关联查询 ,查询拼音为“S”的汉字;
select p.* from 目标表 p , t_cosler c where CONV(HEX(left(目标表中要检索的字段,1)),16,10) between c.cBegin and c.cEnd and c.f_PY='要检索的字母';


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM