mysql 首字母排序_Mysql sql书写之——实现首字母从A-Z排序
1.常规排序ASC DESC
ASC 正序
DESC倒叙
-- 此处不用多讲
2.自定义排序
自定义排序是根据自己想要的特定字符串(数字)顺序进行排序。主要是使用函数 FIELD(str,str1,str2,str3,...)
MySQL的自定义排序,str与str1、str2、str3...进行比较,并按照str1,str2,str3...的顺序输出,如果遇到str为null或者不存在str1,str2,str3...中的情况的则序列为0,
eg1:
select * from test order by field(value,'test1','test2','test3','test4') asc/desc
eg2:
select * from test where value in('test1','test2','test3','test4') order by field(value,'test1','test2','test3','test4') asc/desc-- 保证只满足条件的进行排序
3.按中文拼音字母排序
如果表字段使用的GBK编码的话,我们可以直接order by value,因为GBK本身就是按照拼音字母排序ABCDEFGHIGK...,当第一位相同的时候会比较第二位,以此类推。 如果表字段使用的UTF-8编码的话,通常我们都会的编码,这样我们可以使用MySQL的convert方法开转换gbk进行排序。
eg1:
select * from user ORDER BY CONVERT(name USING GBK) ASC;
我们可以从下图看出,这种配需方式没有将中文和英文结合起来一起排序,而是各自的排序。故而我们使用mysql的存储过程做到不管是用户的姓名为中文或是英文,都可以综合的排序,具体代码如下:
1 DELIMITER $$2 CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf83 DETERMINISTIC4 BEGIN
5 DECLARE V_RETURN VARCHAR(255);6 DECLARE V_BOOL INT DEFAULT 0;7 DECLARE FIRST_VARCHAR VARCHAR(1);8
9 SET FIRST_VARCHAR = left(CONVERT(P_NAME USING gbk),1);10 SELECT FIRST_VARCHAR REGEXP '[a-zA-Z]' INTOV_BOOL;11 IF V_BOOL = 1 THEN
12 SET V_RETURN =FIRST_VARCHAR;13 ELSE
14 SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10),15 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,16 0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,17 0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),18 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');19 END IF;20 RETURNV_RETURN;21 END$$22 DELIMITER;
View Code
查询语句为:select fristPinyin(name) as pinyin_index,name from app_user ORDER BY fristPinyin(name) ASC ;
注意:
1)fristPinyin 函数只需要运行一次,后面直接操作查询语句即可,如果后面也一起运行会出现:[Err] 1304 - FUNCTION fristPinyin already exists;
2)由于汉语拼音没有以'I','U','V','W'开头的,所以转化的只有'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'W', 'X', 'Y', 'Z'。
三种排序对比结果:
mysql 首字母排序_Mysql sql书写之——实现首字母从A-Z排序相关推荐
- mysql分布式数据库架构_MySQL分布式数据库架构:分库、分表、排序、分页、分组、实现教程...
MySQL分库分表总结: 单库单表 : 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 : 随着用户数量的增加, ...
- mysql 嵌套查询性能_mysql SQL优化之嵌套查询-遁地龙卷风
(-1) 写在前面 这篇随笔的数据使用的是http://blog.csdn.net/friendan/article/details/8072668#comments里的,里面有一些常见的select ...
- mysql 42000 报错_MySQL SQL Error: 1064, SQLState: 42000 错误
你不小心使用了下面的关键字,那么就会报这个错误: SQL Error: 1064, SQLState: 42000 MySQL 关键字和保留字 下面这些是目前 MySQL 所拥有的关键字和保留字,在使 ...
- mysql 生成日历视图_mysql sql语句生成日历表
mysql sql语句生成日历表 (主要用于按月,按天group by分组统计时,有些日期没有记录,需要补0) 从自定义的开始时间,生成1万条记录 CREATE TABLE if not exist ...
- mysql 语句 简书_MySQL SQL语句
Mysql数据库:端口号3306,超级用户 root unsigned 正值 修改提示符:--prompt 提示符 常见定义 参数:\D 完整的日期 \d当前数据库 \h服务器名称 \u 当前用户 数 ...
- mysql查询显示技巧_MYSQL SQL高级查询技巧
1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...
- mysql执行计划性能_MySQL SQL性能分析Explain执行计划
一. 执行计划返回信息详解 ①. 执行计划所含字段 输出列含义id查询标识 select_type查询类型 table查询涉及的表 partitions匹配到的分区信息 type连接类型 possib ...
- mysql 存储过程排序_MYSQL查询节点的所有父节点,按层级排序的存储过程
查询节点的所有父节点,按层级排序的存储过程 父子关系表结构: `parentnode` int(11) ,-- 父节点 `node` int(11) , -- 节点 `isparent` int( ...
- mysql消重统计_mysql sql查询如何实现发私信用户和其他用户的列表?要求消重所有重复的用户结果 - 贪吃蛇学院-专业IT技术平台...
私信表结构如下: 建表语句和数据 CREATE TABLE `message` ( `id` int(5) NOT NULL, `sender_id` int(5) DEFAULT NULL, `re ...
最新文章
- JS window事件全集解析
- 查询数据库中的表结构信息
- 压缩感知(I) A Compressed Sense of Compressive Sensing (I)
- java常见的排序算法_常见排序算法及Java实现
- HTTP/3 来了,你了解它么?
- H264规定了三种主要档次
- TensorFlow(3)-与训练相关的操作
- 运行gclient一直没反应_安川变频器通电没反应维修措施分享
- 使用python对文件下的文件批量重命名
- 使用ElasticSearch6.0快速实现全文搜索功能
- Introduction to dnorm, pnorm, qnorm, and rnorm for new biostatisticians
- 每天一道剑指offer-翻转单词顺序列
- 家庭网络布线图与布线方案
- PHP网页输入年份查找生肖,vb十二生肖程序 根据年份的输入便可以查询到你是什么生肖...
- 为您详解在ChemDraw中进行3D建模的方法
- 内涵外延发生巨变的嵌入式技术,未来如何发展?
- PHPMywind while 二级嵌套循环
- 欧格教育:差评对店铺有哪些影响
- 设定所有版本的谷歌浏览器支持flash
- 亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统
热门文章
- 当前的几种开源游戏服务端介绍
- 用户激励—积分体系分析
- 离职证明中能否写明离职原因?
- JBOD里都有什么?
- 【财经期刊FM-Radio|2020年12月18日】
- 第十二讲-面向对象(二)作业
- wundos无法对计算机进行启动,fanhuiwundos电脑提醒不是正版想
- 三十七、The authenticity of host ‘slave1 (192.168.231.106)‘ can‘t be established.
- dpo指标详解买入绝技_极少人知道的“DPO MADPO”组合指标,完胜MACD,实战性很强!...
- 中国高阻隔膜行业运营模式分析及发展前景展望报告报告2021年版