教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL查询汉字的拼音首字母实例教程

MySQL查询汉字的拼音首字母实例教程

发布时间:2016-05-07   编辑:jiaochengji.com
本文介绍了mysql实现查询汉字拼音首字母的方法,有关mysql数据库如何查询汉字拼音首字母的例子,有需要的朋友参考下。

最好的方法还是用 PHP 来取拼音首字母,在 MySQL 里新建一个字段来存放
php 里查询汉字的拼音首字母已经有很多参考的代码了。
现在给出在mysql 里实现的, 测试环境是mysql-5.0.27-win32

1、建立拼音首字母资料表
 

复制代码 代码示例:

DROP TABLE IF EXISTS `pyk`;
CREATE TABLE `pyk` (
`PY` varchar(1) ,
`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',-17417,-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,-13319),
('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 char
BEGIN
DECLARE hz_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 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 where hz_code>=pyk.hz1 and hz_code<=pyk.hz2;
RETURN hz_py;

END$$
delimiter $$
 

3、测试
 

复制代码 代码示例:
mysql> select hzcode('南海龙王');
+--------------------+
| hzcode('南海龙王') |
+--------------------+
| N |
+--------------------+
1 row in set (0.00 sec)

4、建立个测试表
 

复制代码 代码示例:

DROP TABLE IF EXISTS `f1`;
create table f1 (
name varchar(30),
pykey varchar(1)
);

insert into f1(name) values
('张三'),
('李四'),
('王五'),
('赵六'),
('钱七');
 

5、测试
 

复制代码 代码示例:

mysql> select * from f1;
+------+-------+
| name | pykey |
+------+-------+
| 张三 | NULL |
| 李四 | NULL |
| 王五 | NULL |
| 赵六 | NULL |
| 钱七 | NULL |
+------+-------+
5 rows in set (0.00 sec)

mysql> update f1 set pykey = hzcode(name);
Query OK, 5 rows affected (0.05 sec)
Rows matched: 5 Changed: 5 Warnings: 0

mysql> select * from f1;
+------+-------+
| name | pykey |
+------+-------+
| 张三 | Z |
| 李四 | L |
| 王五 | W |
| 赵六 | Z |
| 钱七 | Q |
+------+-------+
5 rows in set (0.00 sec)

这样就很方便地在MYSQL里查询汉字的首字母了。 类似地也可以直接在MYSQL得到汉字拼音。 不过需要拼音表,函数写法也不一样。

您可能感兴趣的文章:
MySQL查询汉字的拼音首字母实例教程
mysql根据汉字首字母排序的方法
php实现汉字转拼音
PHP汉字拼音转换、公历农历转换的实例详解
js 汉字转拼音的代码
php获取汉字中首字母(gb2312编码)的实现代码
vbs 汉字转拼音的函数(代码)
mysql汉字字段按拼音排序的方法
asp.net 取中文汉字第一个拼音字母的代码
php中怎么将中文转换拼音

关键词: 汉字转拼音  首字母   
[关闭]
~ ~