Mysql根据拼音首字母分组和排序
最近业务上有个需求,需要根据英文字母展示对应的人名,和我们手机的通讯录差不多
如下图所示:
通常如果表设计的时候增加了对应的首字母字段应该很好实现,那如果没加,应该怎么实现呢!
1.图示Sql
SELECT name,ELT(INTERVAL (CONV(HEX(LEFT (CONVERT (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') AS firstLetter from sys_user_lawyer_info;
将字段转换为Gbk编码,取左边第一位,然后和字符集相对应上
运行结果:
2.通过mysql function(函数) 进行实现
- 执行以下代码
CREATE FUNCTION `fristPinyin` (P_NAME VARCHAR(255)) RETURNS VARCHAR (255) CHARSET utf8 DETERMINISTIC
BEGINDECLARE V_RETURN VARCHAR (255);
DECLARE V_BOOL INT DEFAULT 0;
DECLARE V_NUM VARCHAR (2);
DECLARE FIRST_VARCHAR VARCHAR (1);
SET FIRST_VARCHAR = LEFT (CONVERT(P_NAME USING gbk), 1);
SELECTFIRST_VARCHAR REGEXP '[a-zA-Z]' INTO V_BOOL;
SELECTFIRST_VARCHAR REGEXP '[0-9]' INTO V_NUM;IF V_BOOL = 1 THEN
SET V_RETURN = FIRST_VARCHAR;
ELSEIF V_NUM = 1 THEN
SET V_RETURN = '#';ELSESET 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'
);
END
IF;
RETURN V_RETURN;
END;
- 执行成功后,数据库中会多出一个函数方法
- sql调用函数
select fristPinyin(column) firstName from table;
成功如图所示
Mysql根据拼音首字母分组和排序相关推荐
- mysql中英文拼音首字母获取及排序
需求 在数据库中需要根据用户名按a-z排序: 方式一 因为我们通常使用的编码都是utf-8;所以直接排序并不是按照我们所期待的拼音从a-z排序;我们需要将字符转换成gbk即可: select * fr ...
- PHP利用ICU扩展intl快速实现汉字转拼音以及按拼音首字母分组排序
ICU(International Components for Unicode)里提供了transliterator(直译器), 可以很方便把其他语言(比如简体中文)转为拉丁文表示: http:// ...
- Js实现中文排序,并根据拼音首字母分组
Js实现中文排序,并根据拼音首字母分组 const pySegSort=(arr) =>{if (!String.prototype.localeCompare) return nulllet ...
- Js根据拼音首字母分组
记录一下Js根据拼音首字母分组的方法 引自https://segmentfault.com/a/1190000017321316 如有侵权请联系. const pySegSort=(arr) => ...
- php实现通讯录按字母分组,iOS - 通讯录开发,名字按拼音首字母分组排序
应项目需要,需添加一个自定义的通讯录,所以需要对联系人按名字的首字母进行排序.以下方法已经封装好,复制到项目中直接可以使用. 该方法是使用UILocalizedIndexedCollation来进行本 ...
- 通讯录c语言编程按字母分组,iOS - 通讯录开发,名字按拼音首字母分组排序
应项目需要,需添加一个自定义的通讯录,所以需要对联系人按名字的首字母进行排序.以下方法已经封装好,复制到项目中直接可以使用. 该方法是使用UILocalizedIndexedCollation来进行本 ...
- php中按首字母查询城市,thinkphp 根据拼音首字母全国城市排序
/** * 二维数组根据首字母分组排序 * @param array $data 二维数组 * @param string $targetKey 首字母的键名 * @return ar ...
- 获取名字拼音首字母转换大写排序
//排序 - (void)sequenceWithArray:(NSArray *)nameArray{ self.nameDic = [NSMutableDictionary dictionary] ...
- MySQL按拼音首字母排序
若数据表tbl的某字段name的字符编码是utf8_general_ci SELECT name FROM `tbl` WHERE 1 ORDER BY CONVERT(name USING gbk) ...
最新文章
- pandas使用tabulate函数将pandas dataframe以类似于plsql表格的方式打印出来(printing dataframe in tabular format)
- 有道词典 纯净版 - imsoft.cnblogs
- 音乐会的等待-单调栈
- 刚刚,Python 3.10 正式发布了!我发现了一个可怕的功能...
- 最新可用NOD32免ID升级服务器
- 数据库技术基础:数据库与数据库管理系统概念介绍
- python列表的表示形式_将列表的字符串表示形式转换为Python中的列表
- MSNP18协议分析(一)--- MSN协议介绍
- 使用油猴插件,屏蔽网页上的禁止右键操作
- 阿里巴巴与山东省人民政府签署战略合作协议
- 2022年Android官方模拟器安装Xposed教程+测试工具PatDroid安装教程
- 《数据分析实战》--用R做交叉列表
- 盖世神器PowerPro使用视频教程-1. 程序的安装概述
- 消失的2000万辆小黄车去哪儿了?
- Excel数据可视化——使用图标集显示数据的意义
- RockyLinux9.0系统在VMware虚拟机上【保姆级】安装步骤,并修改网络配置,使用固定IP进行SSH连接【47张过程图】
- 2009年数学建模B题
- php cad如何转换成jpg,如何将cad导成jpg图片格式?
- 改革春风吹满地——【题解】
- AutoCAD插入EXCEL表和 导入AtliumDesigner 的PCB图