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 a-z排序_mysql实现首字母从A-Z排序相关推荐

  1. mysql简拼查询_MySQL拼音首字母查询_MySQL

    bitsCN.com 最近一个项目中有个模块需要实现拼音首字母查询功能,网上查了一下资料,自己重新修改整理了一下,使其满足项目的要求. 实现过程如下: 1.创建一个获取中英文大写首字母函数: DROP ...

  2. mysql首字母排序_mysql实现首字母从A-Z排序

    1.常规排序ASC DESC ASC 正序 DESC倒叙 -- 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序.主要是使用函数 FIELD(str,str1,s ...

  3. mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序

    mysql表中文字段提取拼音首字母 SELECT a.提取字段, IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 USING gbk), 1)), ...

  4. mysql 字母分组_MySQL按照汉字的拼音排序、按照首字母分类

    项目中有时候需要按照汉字的拼音排序,比如联系人列表.矿物分类等,有的还需要按拼音字母从A到Z分类显示. 如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法(常用 ...

  5. 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序

    [package com.syz;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import ja ...

  6. 用MySQL数据库来处理中英文取首字母排序

    我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的. 我们建立一个函数: DELIMITER $$ CREATE ...

  7. mysql 中英按字母排序_利用MySQL数据库来处理中英文取首字母排序

    很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需. 我们的联系人列表经常会有按照首字母排序的需求.  这个很方便, 很清晰, 如果不说性能如何 ...

  8. mysql 拼音首字母_MySQL拼音首字母查询(支持三个中文以内的查询)

    #参考这篇博客:http://blog.csdn.net/naruto1021/article/details/17502783,不过这个只支持查询一个中文字母,这是不太符合我的要求,改写如下: 如果 ...

  9. SQL 中文首字母提取与自定义排序

    中文首字母提取 利用汉字编码边界值提取 --中文转首字母 select case when regexp_like(t.party_name,'^[a-zA-Z0-9]') then upper(su ...

最新文章

  1. android ndk platform,Android NDK Platform Build and Application
  2. Cassandra 处理客户端请求
  3. 【学习】Java的反射机制
  4. 虚拟交换机软件_H3C交换机IRF配置介绍
  5. python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
  6. JavaScript系列--类型判断的4种基本方法,研究jquery的type方法,空对象的检测方法,类数组对象...
  7. 条件变量对多线程求素数的改进
  8. 杰控连接mysql_工控自动化应用方案:杰控FameView组态软件在数据库连接和查询方面的应用...
  9. java qq机器人_简单几步教你如何用Java快速制作一个QQ机器人
  10. ClassCastException: XXX are in unnamed module of loader ‘app‘异常分析
  11. 微信小程序一个按钮同时获取用户信息和手机号码
  12. GAMES101课程学习笔记—Lec 02:Linear Algebra 线性代数回顾
  13. VS2022为什么会出现找不到指定文件?
  14. 【GStreamer】gstreamer sink中对比度contrast、亮度brightness、饱和度saturation、hue 概念理解
  15. SPFA+寻路(行路难,洛谷2832)
  16. LeetCode 415.字符串相加
  17. 英语语法汇总(15.句子)
  18. pandas学习笔记------set_index()
  19. 【Java二十周年】爱上Java无法自拔
  20. 徐志摩的再别康桥 .

热门文章

  1. java timer和timertask_Timer和TimerTask与Java中的线程+睡眠
  2. variant 字符串数组_VB数组部分核心知识总结
  3. ggplot2 调整绘图区域大小
  4. 为什么 SSH 的默认端口是 22 ?
  5. 在线作图|在线做协惯量分析(CoIA)
  6. iMeta:青岛大学苏晓泉组开发跨平台可交互的微生物组分析套件PMS(全文翻译,PPT,视频)...
  7. R语言ggplot2可视化:使用ggfortyify包中的autoplot函数自动可视化时间序列数据(Time Series Plot From a Time Series Object (ts))
  8. R语言tidyquant包的tq_transmute函数计算持有某只股票的天、月、周收益率、ggplot2使用条形图(bar plot)可视化股票月收益率数据条形图
  9. R语言基于遗传算法(Genetic Algorithm)进行特征筛选(feature selection)
  10. Python可视化(matplotlib)在图像中添加文本和标记(Text and Annotation)