本人提供的方法有如下特点:
1.代码精简,使用简单,只要会基本的SQL语句就行
2.不用建立mysql 函数等复杂的东西
3.汉字库最全,可查询20902个汉字
方法如下:
1、建立拼音首字母资料表
Sql代码:(最好再加上主键和索引)
- DROP TABLE IF EXISTS `pinyin`;
- CREATE TABLE `pinyin` (
- `PY` varchar(1),
- `HZ1` varchar(1),
- `HZ2` varchar(1)
- ) ;
- INSERT INTO `pinyin` (`PY`,`HZ1`,`HZ2`) VALUES
- ('A','吖','驁'),
- ('B','八','簿'),
- ('C','嚓','錯'),
- ('D','咑','鵽'),
- ('E','妸','樲'),
- ('F','发','鰒'),
- ('G','猤','腂'),
- ('H','妎','夻'),
- ('J','丌','攈'),
- ('K','咔','穒'),
- ('L','垃','鱳'),
- ('M','嘸','旀'),
- ('N','丆','桛'),
- ('O','噢','漚'),
- ('P','妑','曝'),
- ('Q','七','囕'),
- ('R','呥','鶸'),
- ('S','仨','蜶'),
- ('T','他','籜'),
- ('W','屲','鶩'),
- ('X','夕','鑂'),
- ('Y','丫','韻'),
- ('Z','帀','咗');
执行后检查添加的表中的数据记录是否有“?”问号,如果有则表示数据库编码有问题。
2、查询数据库表中汉字首字拼音字母
SELECT `pinyin`.py, `相应表` . *
FROM `相应表` , `pinyin`
WHERE `汉字标题` >= `hz1`
AND `汉字标题` <= `hz2` ;
也可以直接查询汉字的首字拼音字母
SELECT `pinyin`.py
FROM `pinyin`
WHERE '汉字' >= `hz1`
AND '汉字' <= `hz2` ;
查询结果是"H "
****注意****
此方法只适用于gbk的编码,其他的编码需要先转换成gbk的,可以用convert(words using gbk)
还可以用函数处理
CREATE FUNCTION firstPY(words varchar(255)) RETURNS mediumtext
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 into @fpy from pinyin where hz2>=@pc and hz1<=@pc;
end;
end if;
Return @fpy;
END