mysql首字母排序_mysql实现首字母从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的存储过程做到不管是用户的姓名为中文或是英文,都可以综合的排序,具体代码如下:
DELIMITER $$CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
DETERMINISTICBEGIN
DECLARE V_RETURN VARCHAR(255);DECLARE V_BOOL INT DEFAULT 0;DECLARE FIRST_VARCHAR VARCHAR(1);SET FIRST_VARCHAR = left(CONVERT(P_NAME USING gbk),1);SELECT FIRST_VARCHAR REGEXP '[a-zA-Z]' INTOV_BOOL;IF V_BOOL = 1 THEN
SET V_RETURN =FIRST_VARCHAR;ELSE
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');END IF;RETURNV_RETURN;END$$
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实现首字母从A-Z排序相关推荐
- mysql a-z排序_mysql实现首字母从A-Z排序
1.常规排序ASC DESC ASC 正序 DESC倒叙 - 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序.主要是使用函数 FIELD(str,str1,st ...
- mysql简拼查询_MySQL拼音首字母查询_MySQL
bitsCN.com 最近一个项目中有个模块需要实现拼音首字母查询功能,网上查了一下资料,自己重新修改整理了一下,使其满足项目的要求. 实现过程如下: 1.创建一个获取中英文大写首字母函数: DROP ...
- mysql时间排序_mysql – 按日期和时间降序排序?
所有 我想显示最近5个输入的数据,以获取特定的ID. 我的sql查询是, SELECT id, name, form_id, DATE(updated_at) as date FROM wp_frm_ ...
- mysql++月份排序_Mysql 按月份为组进行统计排序_MySQL
SELECT YEAR(established_time) AS 'year' , MONTH(established_time) AS 'month' , COUNT(*) AS 'count' F ...
- mysql帖子排序_mysql - 无法按元值对帖子排序 - SO中文参考 - www.soinside.com
我正在尝试获取Wordpress个帖子的列表,并以DESC顺序使用meta_key =" zoacres_property_price"对它们进行排序,所以我做到了:SELECT ...
- mysql 分组行号_mysql 显示行号,以及分组排序
建表: CREATE TABLE `my_tb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_code` varchar(255) DEFAULT ...
- 查询排序_MySQL使用UNION连接两个查询排序失效
概述 UNION 连接数据集关键字,可以将两个查询结果集拼接为一个,会过滤掉相同的记录. UNION ALL 连接数据集关键字,可以将两个查询结果集拼接为一个,不会过滤掉相同的记录 今天在接到一个需求 ...
- mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序
mysql表中文字段提取拼音首字母 SELECT a.提取字段, IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 USING gbk), 1)), ...
- mysql按首字母查询_按照首字母搜索功能(mysql数据库执行语句)
标签:sql select * from `dd` order by ELT(INTERVAL(CONV(HEX(left(CONVERT(num USING gbk),1)),16,10), 0x ...
最新文章
- android Intent PendingIntent的区别
- 使用摄像头运行ORB SLAM2---使用视频运行ORB-SLAM2
- 【Spring注解系列08】@PostConstruct与@PreDestroy
- java canonicalize_java.io.IOException:java.io.WinNTFileSystem.canonicalize0处的无效参数
- html所有页面根的对象,在django中显示来自所有用户的对象,无需登录到html页面...
- php 换行 PHP_EOL变量
- mysql innodb缓存策略之Buffer Pool
- SpringBoot 精通系列-构建一个RESTful Web 服务
- 微信小程序-day1
- 阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念
- ArcGIS中GWR模型的构建
- 十大骨传导耳机品牌,骨传导耳机品牌推荐
- php Excel 合并单元格
- ubuntu连接xp的共享打印机
- chromedriver selenium谷歌浏览器驱动
- 将BT进行到底-BT客户端工具全收集
- JavaScript进阶必会的手写功能(二)
- 默认事件和阻止默认事件
- 张量中unfold()函数理解
- 机器学习 -- 二元逻辑回归实例
热门文章
- php 竞拍系统,在线竞拍系统的PHP实现框架
- EOS注册账号小白篇, 使用app注册EOS账号
- 机器学习之监督学习、数据标签
- centos开机自启动脚本死循环无法开机解决
- android手机备份恢复出厂设置密码,华为手机恢复出厂设置密码多少呢?
- 论文笔记《Spatially Sparse Precoding in Millimeter Wave MIMO Systems》
- 计算机er应该选择保研还是出国?
- ARM架构基本理论(1)
- msm8953 + android7.1.2知识总结
- 软件测试面试“圣经”分享,满满的知识点