MySQL 实现的汉字拼音排序(mysql汉字拼音排序)

MySQL 是一种关系型数据库,通过应用端程序来处理数据。MySQL 也支持对字符串进行排序操作,其中,汉字拼音排序是 MySQL 排序应用非常常用的一项,同时也是一个相对复杂的工作.

MySQL 实现汉字拼音排序有多种方式,这里介绍最常见的几种方法:

第一种方法是采用全地址码排序,即以每个汉字的“全拼”(拼音)进行比较,代码示例如下:

ORDER BY CONVERT(str USING gbk)

第二种方法是采用忽略音标的排序,即忽略汉字的声调,仅使用每个汉字的首字母做排序比较,代码示例如下:

ORDER BY LEFT(CONVERT(str USING gbk),1 )

第三种方法是采用自定义函数的排序,即通过定义函数来判断汉字的拼音,根据拼音进行比较,代码示例如下:

DELIMITER $$
CREATE FUNCTION `convertIsLetter` ( `str` VARCHAR(255) ) RETURNS VARCHAR(255)
BEGIN
DECLARE isLetter INT;
DECLARE temp VARCHAR(255);
DECLARE tempLetter VARCHAR(255);
SET isLetter = 0;
SET temp = "";
SET @str = CONVERT(str USING gbk)
WHILE isLetter
SET tempLetter = substr(@str,isLetter,1 );
IF(ASCII(tempLetter)
SET temp = CONCAT(temp,tempLetter);
END IF;
SET isLetter = isLetter + 1;
END WHILE;
RETURN temp;
END $$
DELIMITER ;
```

然后,在SQL查询语句中对 `temp` 字段使用该函数进行排序,代码如下:

ORDER BY convertIsLetter(str);


此外,在 MySQL 中还可以使用[全拼搜索实现汉字拼音排序] [1]。通过全拼搜索,可以精确地判断出拼音字母顺序,在搜索时通过拼音进行排序,如下:

ORDER BY MATCH(str) AGAINST (‘+全拼搜索关键字’ IN BOOLEAN MODE);


以上,就是关于MySQL 实现的汉字拼音排序的几种常见方法,MySQL 提供了几种方式应用来实现汉字拼音排序,才让我们更容易处理数据库中的字符串数据,并能以我们更优雅的方式来实现。

[1]: http://www.runoob.com/mysql/mysql-word-spell-search.html

数据运维技术 » MySQL 实现的汉字拼音排序(mysql汉字拼音排序)