mysql a-z排序_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的存储过程做到不管是用户的姓名为中文或是英文,都可以综合的排序,具体代码如下:
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排序相关推荐
- mysql简拼查询_MySQL拼音首字母查询_MySQL
bitsCN.com 最近一个项目中有个模块需要实现拼音首字母查询功能,网上查了一下资料,自己重新修改整理了一下,使其满足项目的要求. 实现过程如下: 1.创建一个获取中英文大写首字母函数: DROP ...
- mysql首字母排序_mysql实现首字母从A-Z排序
1.常规排序ASC DESC ASC 正序 DESC倒叙 -- 此处不用多讲 2.自定义排序 自定义排序是根据自己想要的特定字符串(数字)顺序进行排序.主要是使用函数 FIELD(str,str1,s ...
- mysql表中文字段提取拼音首字母最便捷实现,中文按拼音首字母排序
mysql表中文字段提取拼音首字母 SELECT a.提取字段, IFNULL(ELT(INTERVAL (CONV(HEX(left(CONVERT(a.提取字段 USING gbk), 1)), ...
- mysql 字母分组_MySQL按照汉字的拼音排序、按照首字母分类
项目中有时候需要按照汉字的拼音排序,比如联系人列表.矿物分类等,有的还需要按拼音字母从A到Z分类显示. 如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法(常用 ...
- 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序
[package com.syz;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import ja ...
- 用MySQL数据库来处理中英文取首字母排序
我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何, 就像让数据库来做呢? 其实MySQL是支持的. 我们建立一个函数: DELIMITER $$ CREATE ...
- mysql 中英按字母排序_利用MySQL数据库来处理中英文取首字母排序
很久都没有写博客了, 但是也积攒了了很多的问题, 下次找个时间一起整理一下, 然后记录下来, 以备不时之需. 我们的联系人列表经常会有按照首字母排序的需求. 这个很方便, 很清晰, 如果不说性能如何 ...
- mysql 拼音首字母_MySQL拼音首字母查询(支持三个中文以内的查询)
#参考这篇博客:http://blog.csdn.net/naruto1021/article/details/17502783,不过这个只支持查询一个中文字母,这是不太符合我的要求,改写如下: 如果 ...
- SQL 中文首字母提取与自定义排序
中文首字母提取 利用汉字编码边界值提取 --中文转首字母 select case when regexp_like(t.party_name,'^[a-zA-Z0-9]') then upper(su ...
最新文章
- android ndk platform,Android NDK Platform Build and Application
- Cassandra 处理客户端请求
- 【学习】Java的反射机制
- 虚拟交换机软件_H3C交换机IRF配置介绍
- python拷贝是什么知识点_python闭包、深浅拷贝、垃圾回收、with语句知识点汇总...
- JavaScript系列--类型判断的4种基本方法,研究jquery的type方法,空对象的检测方法,类数组对象...
- 条件变量对多线程求素数的改进
- 杰控连接mysql_工控自动化应用方案:杰控FameView组态软件在数据库连接和查询方面的应用...
- java qq机器人_简单几步教你如何用Java快速制作一个QQ机器人
- ClassCastException: XXX are in unnamed module of loader ‘app‘异常分析
- 微信小程序一个按钮同时获取用户信息和手机号码
- GAMES101课程学习笔记—Lec 02:Linear Algebra 线性代数回顾
- VS2022为什么会出现找不到指定文件?
- 【GStreamer】gstreamer sink中对比度contrast、亮度brightness、饱和度saturation、hue 概念理解
- SPFA+寻路(行路难,洛谷2832)
- LeetCode 415.字符串相加
- 英语语法汇总(15.句子)
- pandas学习笔记------set_index()
- 【Java二十周年】爱上Java无法自拔
- 徐志摩的再别康桥 .
热门文章
- java timer和timertask_Timer和TimerTask与Java中的线程+睡眠
- variant 字符串数组_VB数组部分核心知识总结
- ggplot2 调整绘图区域大小
- 为什么 SSH 的默认端口是 22 ?
- 在线作图|在线做协惯量分析(CoIA)
- iMeta:青岛大学苏晓泉组开发跨平台可交互的微生物组分析套件PMS(全文翻译,PPT,视频)...
- R语言ggplot2可视化:使用ggfortyify包中的autoplot函数自动可视化时间序列数据(Time Series Plot From a Time Series Object (ts))
- R语言tidyquant包的tq_transmute函数计算持有某只股票的天、月、周收益率、ggplot2使用条形图(bar plot)可视化股票月收益率数据条形图
- R语言基于遗传算法(Genetic Algorithm)进行特征筛选(feature selection)
- Python可视化(matplotlib)在图像中添加文本和标记(Text and Annotation)