今日在网上下载了份省市区对应的数据库,由于要做拼音查询,发现该库里没有拼音字段。于是在网上找到了一遍文章,只能做中文字符串第一个字转拼音。下面只能靠自己了,于是我在此功能的基础上做了很简单的扩展。
参考文章地址:
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函数,实现获取汉字拼音首字母。在SQL语句中传入汉字返回对应的首字母
MySQL汉字转拼音简码UDF(用户自定义函数)是一种扩展MySQL功能的方法,它使得数据库系统能够处理特定的汉字到拼音转换任务,而无需通过效率较低的函数实现。UDF允许用户为MySQL创建新的函数,以提高性能并满足特定...
本文将介绍如何创建两个自定义函数,分别是`fristPinyin`和`pinyin`,用于实现中文汉字转拼音的功能,特别是获取汉字首字母和完整拼音。 `fristPinyin`函数的主要作用是提取输入的中文字符串的第一个汉字的首字母。...
示例中提到的其他文章可能涵盖了更多创建和使用自定义函数的实例,如汉字转拼音、提取数字以及判断正整数等功能。 总之,MySQL自定义函数提供了一种强大的工具,使数据库管理员和开发者可以根据具体需求定制功能,...
在MySQL中,由于其内置不支持汉字转拼音的功能,我们通常需要借助外部工具或者自定义函数来实现。一种常见方法是创建一个用户定义函数(UDF),这个函数可以调用C或C++库(如pinyin4cpp或libpinyin)进行转换,并将...
标题“数据库获取中文首字母自定义函数(字母查汉字模糊查询)”指的是在数据库系统中定义一个函数,该函数能接受用户输入的英文首字母,然后返回所有以该首字母为拼音首字母的中文字段。这种功能对于具有大量中文...
了解了如何解决创建自定义函数时遇到的问题后,让我们进一步探讨MySQL自定义函数的应用。在实际开发中,你可以利用自定义函数处理各种任务,比如字符串操作、日期时间转换、数学计算等。以下是一些常见的函数类型: ...
例如,可以使用第三方库(如MySQL的用户自定义函数UDF)来实现汉字到拼音的转换,然后再进行排序。这些库通常基于开源的汉字拼音转换算法,如pinyin4j或hanyu-pinyin等。 此外,如果你的数据库包含大量的汉字,且对...
通过上述步骤,我们成功地实现了利用MySQL自定义函数结合映射表来提取汉字首字母的功能。这种方法不仅能够提高查询效率,还能确保提取结果的准确性。在实际应用中,可以进一步扩展映射表中的数据量,以支持更多的...
首先,我们需要了解汉字转拼音的基本原理。汉字到拼音的转换通常依赖于预定义的拼音库,这些库包含了汉字与其对应的拼音映射。在SQL中,我们可以通过创建一个存储过程或函数来实现这个功能。例如,我们可以创建一个...
在MySQL数据库中,进行按姓名首字母搜索时,通常需要处理中文字符转化为拼音的问题,以便进行字母顺序的排序和查询。文档中提到的两个自定义函数`fristPinyin`和`pinyin`就是用于解决这个问题的。 `fristPinyin`...
本文将详细介绍三种常见的排序方式:常规排序、自定义排序以及按中文拼音字母排序。 1. 常规排序 常规排序是基于数据列的默认顺序进行升序(ASC)或降序(DESC)排列。在SQL语句中,我们可以通过`ORDER BY`子句实现...
客服那边需要我对一些酒店进行中文拼音排序,以前没有接触过,在php群里问了一些大牛。。得到了2种答案,都可以。哈哈·~ 以下既是msyql 例子,表结构是utf-8的 方法一、 代码如下: SELECT `hotel_name` FROM `hotel...
这部分内容主要涉及如何在MySQL中创建一个自定义函数`getPY`,该函数能够处理输入的汉字字符串并返回拼音首字母的组合。下面将详细解释这个函数的实现: 1. 首先,我们看到函数的定义部分,它使用`DELIMITER $$`来...
这个函数接受一个汉字作为输入,返回其拼音的首字母,并将其转化为大写。如果需要获取全部拼音,可以去掉`.upper()`。 描述中提到的“无需数据库”,意味着这个方法不需要依赖外部存储系统,可以在本地直接完成,这...
这通常不会按照汉字的拼音或笔画顺序进行排序,因为MySQL会把每个中文字符视为一个单独的单位,而不是考虑它们的内在结构或拼音。这就是为什么我们需要采取额外的步骤来确保正确的排序。 为了对中文字段进行拼音...
在IT行业中,尤其是在数据库管理和开发领域,经常需要处理汉字字符并进行特定的处理,例如获取汉字字符串的首字母。...同时,这也涉及到对汉字与拼音转换规则的了解,这通常是通过外部工具或自定义函数来实现的。