资源描述:
《MySQL实现查询汉字的拼音首字母》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MySQL实现查询汉字的拼音首字母时间:2010-04-0612:23:22 类别:技术 访问:1,314views RSS2.0 评论 其实最好的方法还是用PHP来取拼音首字母,在MySQL里新建一个字段来存放php里查询汉字的拼音首字母已经有很多参考的代码了。现在给出在mysql里实现的,测试环境是mysql-5.0.27-win321、建立拼音首字母资料表DROP TABLE IF EXISTS `pyk`; CREATE TABLE `pyk` ( `PY` varchar(1) ,
2、 `HZ1` int , `HZ2` int ) ; INSERT INTO `pyk` (`PY`,`HZ1`,`HZ2`) VALUES ('A',-20319,-20284),('B',-20283,-19776),('C',-19775,-19219), ('D',-19218,-18711), ('E',-18710,-18527), ('F',-18526,-18240), ('G',-18239,-17923), ('H',-17922,-17418), ('J',-174
3、17,-16475), ('K',-16474,-16213), ('L',-16212,-15641), ('M',-15640,-15166), ('N',-15165,-14923), ('O',-14922,-14915), ('P',-14914,-14631), ('Q',-14630,-14150), ('R',-14149,-14091), ('S',-14090,-13
4、319), ('T',-13318,-12839), ('W',-12838,-12557), ('X',-12556,-11848), ('Y',-11847,-11056), ('Z',-11055,-10247);2、建立mysql函数DROP FUNCTION IF EXISTS hzcode; delimiter // CREATE FUNCTION hzcode (s CHAR(255)) RETURNS charBEGINDECLARE hz_
5、code int;DECLARE hz_py char;SET hz_code = ord(substring(s,1,1))*256+ord(substring(s,2,1))-65536 ;select py into hz_py from pyk where hz_code>=pyk.hz1 and hz_code<=pyk.hz2; RETURN hz_py;END// delimiter ;数据库类型如果是GBK的时候,这个函数好像有点小问题,稍微改动了下,貌似可以在GBK中使用了delimiter $$DROP
6、 FUNCTION IF EXISTS `hzcode`$$CREATE FUNCTION `hzcode` (s CHAR(255)) RETURNS char BEGIN DECLARE hz_code int; DECLARE hz_py char; declare str varchar(400); SET hz_code = ord(substring(s,1,1))-65536 ; select py into hz_py from pyk whe
7、re hz_code>=pyk.hz1 and hz_code<=pyk.hz2; RETURN hz_py; END$$ delimiter $$3、先测试一下mysql>selecthzcode('南海龙王');+--------------------+
8、hzcode('南海龙王')
9、+--------------------+
10、N
11、+--------------------+1rowinset(0.00sec)4、建立个测试表DROP TABLE IF EXISTS `f1`;cr
12、eate table f1 ( name varchar(30), pykey varchar(1) ); insert into f1