`
安静的转着
  • 浏览: 11183 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

MySQL自定义中文转拼音函数

阅读更多
今日在网上下载了份省市区对应的数据库,由于要做拼音查询,发现该库里没有拼音字段。于是在网上找到了一遍文章,只能做中文字符串第一个字转拼音。下面只能靠自己了,于是我在此功能的基础上做了很简单的扩展。

参考文章地址:http://www.oicto.com/mysql-zhongwen-pingyin/

下面说说我的扩展吧,我自定义了两个函数分别功能如下:

fristPinyin : 此函数是将一个中文字符串的第一个汉字转成拼音字母
(例如:"中国人"->Z)

CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
	DECLARE V_RETURN VARCHAR(255);
	SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10), 
		0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7, 
		0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,
		0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),	
	'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');
	RETURN V_RETURN;
END



pinyin :此函数是将一个中文字符串对应拼音母的每个相连
(例如:"中国人"->ZGR)

CREATE FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
	DECLARE V_COMPARE VARCHAR(255);
	DECLARE V_RETURN VARCHAR(255);
	DECLARE I INT;

	SET I = 1;
	SET V_RETURN = '';
	while I < LENGTH(P_NAME) do
		SET V_COMPARE = SUBSTR(P_NAME, I, 1);
		IF (V_COMPARE != '') THEN
			#SET V_RETURN = CONCAT(V_RETURN, ',', V_COMPARE);
			SET V_RETURN = CONCAT(V_RETURN, fristPinyin(V_COMPARE));
			#SET V_RETURN = fristPinyin(V_COMPARE);
		END IF;
		SET I = I + 1;
	end while;
	
	IF (ISNULL(V_RETURN) or V_RETURN = '') THEN
		SET V_RETURN = P_NAME;
	END IF;
  
	RETURN V_RETURN;
END


下面是测试结果:
mysql> select p.province, fristPinyin(p.province), pinyin(p.province) from province p;
+------------------+-------------------------+--------------------+
| province         | fristPinyin(p.province) | pinyin(p.province) |
+------------------+-------------------------+--------------------+
| 北京市           | B                       | BJS                |
| 天津市           | T                       | TJS                |
| 河北省           | H                       | HBS                |
| 山西省           | S                       | SXS                |
| 内蒙古自治区     | N                       | NMGZZQ             |
| 辽宁省           | L                       | LNS                |
| 吉林省           | J                       | JLS                |
| 黑龙江省         | H                       | HLJS               |
| 上海市           | S                       | SHS                |
| 江苏省           | J                       | JSS                |
| 浙江省           | Z                       | ZJS                |
| 安徽省           | A                       | AHS                |
| 福建省           | F                       | FJS                |
| 江西省           | J                       | JXS                |
| 山东省           | S                       | SDS                |
| 河南省           | H                       | HNS                |
| 湖北省           | H                       | HBS                |
| 湖南省           | H                       | HNS                |
| 广东省           | G                       | GDS                |
| 广西壮族自治区   | G                       | GXZZZZQ            |
| 海南省           | H                       | HNS                |
| 重庆市           | Z                       | ZQS                |
| 四川省           | S                       | SCS                |
| 贵州省           | G                       | GZS                |
| 云南省           | Y                       | YNS                |
| 西藏自治区       | X                       | XCZZQ              |
| 陕西省           | S                       | SXS                |
| 甘肃省           | G                       | GSS                |
| 青海省           | Q                       | QHS                |
| 宁夏回族自治区   | N                       | NXHZZZQ            |
| 新疆维吾尔自治区 | X                       | XJWWEZZQ           |
| 台湾省           | T                       | TWS                |
| 香港特别行政区   | X                       | XGTBXZQ            |
| 澳门特别行政区   | A                       | AMTBXZQ            |
+------------------+-------------------------+--------------------+
34 rows in set

mysql> 
分享到:
评论

相关推荐

    Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    在MySQL中实现中文汉字转拼音的功能,主要是为了方便在数据库查询和数据分析时处理中文文本,尤其是在没有全文索引或者需要进行复杂模糊匹配时。以下是一个简单的实现方法,它利用自定义函数来完成这一任务。 首先...

    mysql汉字转拼音简码UDF

    MySQL汉字转拼音简码UDF(用户自定义函数)是一种扩展MySQL功能的方法,它使得数据库系统能够处理特定的汉字到拼音转换任务,而无需通过效率较低的函数实现。UDF允许用户为MySQL创建新的函数,以提高性能并满足特定...

    MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)

    本文将介绍如何创建两个自定义函数,分别是`fristPinyin`和`pinyin`,用于实现中文汉字转拼音的功能,特别是获取汉字首字母和完整拼音。 `fristPinyin`函数的主要作用是提取输入的中文字符串的第一个汉字的首字母。...

    浅谈mysql 自定义函数

    示例中提到的其他文章可能涵盖了更多创建和使用自定义函数的实例,如汉字转拼音、提取数字以及判断正整数等功能。 总之,MySQL自定义函数提供了一种强大的工具,使数据库管理员和开发者可以根据具体需求定制功能,...

    存储过程汉字转拼音

    在MySQL中,由于其内置不支持汉字转拼音的功能,我们通常需要借助外部工具或者自定义函数来实现。一种常见方法是创建一个用户定义函数(UDF),这个函数可以调用C或C++库(如pinyin4cpp或libpinyin)进行转换,并将...

    数据库获取中文首字母自定义函数(字母查汉字模糊查询)

    标题“数据库获取中文首字母自定义函数(字母查汉字模糊查询)”指的是在数据库系统中定义一个函数,该函数能接受用户输入的英文首字母,然后返回所有以该首字母为拼音首字母的中文字段。这种功能对于具有大量中文...

    mysql建立自定义函数的问题

    了解了如何解决创建自定义函数时遇到的问题后,让我们进一步探讨MySQL自定义函数的应用。在实际开发中,你可以利用自定义函数处理各种任务,比如字符串操作、日期时间转换、数学计算等。以下是一些常见的函数类型: ...

    MySQL按照汉字的拼音排序简单实例

    例如,可以使用第三方库(如MySQL的用户自定义函数UDF)来实现汉字到拼音的转换,然后再进行排序。这些库通常基于开源的汉字拼音转换算法,如pinyin4j或hanyu-pinyin等。 此外,如果你的数据库包含大量的汉字,且对...

    查询汉字首字母及全拼sql自定义方法

    首先,我们需要了解汉字转拼音的基本原理。汉字到拼音的转换通常依赖于预定义的拼音库,这些库包含了汉字与其对应的拼音映射。在SQL中,我们可以通过创建一个存储过程或函数来实现这个功能。例如,我们可以创建一个...

    mysql按姓名首字母搜索.docx

    在MySQL数据库中,进行按姓名首字母搜索时,通常需要处理中文字符转化为拼音的问题,以便进行字母顺序的排序和查询。文档中提到的两个自定义函数`fristPinyin`和`pinyin`就是用于解决这个问题的。 `fristPinyin`...

    MySQL按常规排序、自定义排序和按中文拼音字母排序的方法

    本文将详细介绍三种常见的排序方式:常规排序、自定义排序以及按中文拼音字母排序。 1. 常规排序 常规排序是基于数据列的默认顺序进行升序(ASC)或降序(DESC)排列。在SQL语句中,我们可以通过`ORDER BY`子句实现...

    mysql的中文数据按拼音排序的2个方法

    客服那边需要我对一些酒店进行中文拼音排序,以前没有接触过,在php群里问了一些大牛。。得到了2种答案,都可以。哈哈·~ 以下既是msyql 例子,表结构是utf-8的 方法一、 代码如下: SELECT `hotel_name` FROM `hotel...

    sql语句:简写拼音查询

    这部分内容主要涉及如何在MySQL中创建一个自定义函数`getPY`,该函数能够处理输入的汉字字符串并返回拼音首字母的组合。下面将详细解释这个函数的实现: 1. 首先,我们看到函数的定义部分,它使用`DELIMITER $$`来...

    取汉字首字母_取汉字首字母_

    这个函数接受一个汉字作为输入,返回其拼音的首字母,并将其转化为大写。如果需要获取全部拼音,可以去掉`.upper()`。 描述中提到的“无需数据库”,意味着这个方法不需要依赖外部存储系统,可以在本地直接完成,这...

    MySQL对中文进行排序详解及实例

    这通常不会按照汉字的拼音或笔画顺序进行排序,因为MySQL会把每个中文字符视为一个单独的单位,而不是考虑它们的内在结构或拼音。这就是为什么我们需要采取额外的步骤来确保正确的排序。 为了对中文字段进行拼音...

    获得汉字字符串的首字母

    在IT行业中,尤其是在数据库管理和开发领域,经常需要处理汉字字符并进行特定的处理,例如获取汉字字符串的首字母。...同时,这也涉及到对汉字与拼音转换规则的了解,这通常是通过外部工具或自定义函数来实现的。

    mysql 中如何取得汉字字段的各汉字首字母

    在MySQL数据库中,有时我们需要对包含汉字的字段提取每个汉字的首字母,例如用于拼音排序或创建基于拼音的索引。这个问题可以通过编写一个自定义函数来解决,正如给定的代码片段所示。下面我们将详细讨论这个过程。 ...

Global site tag (gtag.js) - Google Analytics