MySql 根据中文拼音首字母排序、 分组排序

news2024/11/16 5:59:30

如地域表信息:

 

如果我们想根据NAME 字段 的值, 按照中文拼音首字母排序 :

sql

SELECT CODE, NAME
FROM district_info
ORDER BY CONVERT(name USING gbk) COLLATE gbk_chinese_ci ASC

效果很OK: 

 

 

那么如果我要整成想电话簿那样, A 分组 B 分组 C 分组呢 ??

方案一

在存储表的时候,直接给新增一个列字段 ,先预习存好首字母

比如:


 然后根据首字母分组排序啥的都非常简单了:
 

SELECT * FROM test
GROUP BY  NAME  ORDER BY first_alp

效果:

 


如果我们不能随便改表加字段呢? 

方案二 

新增一张字母表


CREATE TABLE `alphabet` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` CHAR(1) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
    `begin` SMALLINT(5) UNSIGNED NOT NULL,
    `end` SMALLINT(5) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`) USING BTREE
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=24
;


插入24个字母的默认数据

INSERT INTO `alphabet` VALUES ('1', 'A', '45217', '45252');
INSERT INTO `alphabet` VALUES ('2', 'B', '45253', '45760');
INSERT INTO `alphabet` VALUES ('3', 'C', '45761', '46317');
INSERT INTO `alphabet` VALUES ('4', 'D', '46318', '46825');
INSERT INTO `alphabet` VALUES ('5', 'E', '46826', '47009');
INSERT INTO `alphabet` VALUES ('6', 'F', '47010', '47296');
INSERT INTO `alphabet` VALUES ('7', 'G', '47297', '47613');
INSERT INTO `alphabet` VALUES ('8', 'H', '47614', '48118');
INSERT INTO `alphabet` VALUES ('9', 'J', '48119', '49061');
INSERT INTO `alphabet` VALUES ('10', 'K', '49062', '49323');
INSERT INTO `alphabet` VALUES ('11', 'L', '49324', '49895');
INSERT INTO `alphabet` VALUES ('12', 'M', '49896', '50370');
INSERT INTO `alphabet` VALUES ('13', 'N', '50371', '50613');
INSERT INTO `alphabet` VALUES ('14', 'O', '50614', '50621');
INSERT INTO `alphabet` VALUES ('15', 'P', '50622', '50905');
INSERT INTO `alphabet` VALUES ('16', 'Q', '50906', '51386');
INSERT INTO `alphabet` VALUES ('17', 'R', '51387', '51445');
INSERT INTO `alphabet` VALUES ('18', 'S', '51446', '52217');
INSERT INTO `alphabet` VALUES ('19', 'T', '52218', '52697');
INSERT INTO `alphabet` VALUES ('20', 'W', '52698', '52979');
INSERT INTO `alphabet` VALUES ('21', 'X', '52980', '53640');
INSERT INTO `alphabet` VALUES ('22', 'Y', '53689', '54480');
INSERT INTO `alphabet` VALUES ('23', 'Z', '54481', '55289');

表: 

数据:
 

 

然后回到我们一开始的例子,地域表的数据,想根据 名称 首字母排序 而且 分组 :

 sql :
 

ps : 大家用的时候 依葫芦画瓢把相关需要 排序的主表字段名、列名换一下就行。 这里拿地域表做示例,根据district_info 地域表的name字段做排序。

SELECT  district_info.* , alphabet.name AS first_alp

FROM district_info , alphabet

WHERE  CONV(HEX(LEFT(CONVERT(district_info.name USING gbk ), 1)), 16, 10)
BETWEEN alphabet.begin AND alphabet.end

ORDER BY convert(district_info.name using gbk) ASC
 

效果,很OK:
 

 

好了该篇就到这。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/108103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【正版软件】Navicat for Oracle 数据库数管理和开发工具

前言 Navicat for Oracle 透过精简的工作环境,提高 Oracle 开发人员和管理员的效率和效率。 Navicat for Oracle 透过精简的工作环境,提高 Oracle 开发人员和管理员的效率和效率。专业化 Oracle 的开发-快速安全地创建、组织、访问和共享信息…

微信小程序自定义顶部状态栏

因为工作需要,要在微信小程序中自定义顶部导航栏,通过这篇文章来记录一下自己所得~ 第一步: 需要在json文件中配置"navigation" : "custom",完成自定义导航栏,只保留胶囊按钮,效果如下图&#x…

养殖废水生化后氨氮400mg/L做到15mg/L,有什么降氨氮的工艺?

水产养殖过程中,鱼的排泄物和没有被消耗的饲料降解均会使水中的氨氮剧增,当氨氮浓度大于0.2mg/L时,鱼类摄食就会受到严重影响,造成生长不良或停止生长;达到 2mg/L时,则会造成生物的死亡,严重影响水产的养殖…

【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

技术推荐 自定义Archetype Maven骨架/以当前项目为模板创建maven骨架,可以参考http://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html,详细介绍了如何快速创建和使用Archetype。 技术背景 在工作过程中必然会遇到创建项目的蛋…

最新版Crack:Xceed Ultimate Suite

Xceed Ultimate Suite 包括 160 多个适用于所有 Windows 平台的自适应、可靠和高性能控件和库的重要集合。程序前端的 UI 控件和后端的数据处理库。经常更新,并得到反应支持和开发人员的认可。 适用于所有 Windows 平台的 160 个自适应、可靠和高性能控件和库的重要…

vue-elementUI后台管理系统,已实现用户管理、菜单管理、角色管理、公司管理、权限管理、支付管理等

vue搭建后台管理界面模版(PC端) 完整代码下载地址:vue-elementUI后台管理系统 技术栈 vue2 vuex vue-router webpack ES6/7 axios elementUI 阿里图标iconfont 项目预览 http://nmgwap.gitee.io/vueproject/#/login 说明 本项目主…

Python使用pandas导入csv文件内容

使用pandas导入csv文件内容使用pandas导入csv文件内容1. 默认导入2. 指定分隔符3. 指定读取行数4. 指定编码格式5. 列标题与数据对齐使用pandas导入csv文件内容 1. 默认导入 在Python中导入.csv文件用的方法是read_csv()。 使用read_csv()进行导入时,指定文件名即…

jQuery 过滤方法

文章目录jQuery 过滤方法hasClass() 类名过滤eq() 下标过滤is() 判断过滤not() 反向过滤filter() 表达式过滤has() 表达式过滤后代元素jQuery 过滤方法 过滤方法说明hasClass()类名过滤eq()下标过滤is()判断过滤not()反向过滤filter()表达式过滤has()表达式过滤后代元素 hasCl…

微软发现macOS漏洞可让恶意软件绕过安全检查

©网络研究院 苹果修复了一个漏洞,攻击者可以利用该漏洞通过能够绕过 Gatekeeper 应用程序执行限制的不受信任的应用程序;在易受攻击的 macOS 设备上部署恶意软件。 由微软首席安全研究员发现并报告的安全漏洞(称为Achilles&#xff09…

前端基础_矩阵变换

矩阵变换 在介绍矩阵变换之前,首先要介绍一下变换矩阵,这个矩阵是专门用来实现图形变形的,它与坐标一起配合使用,以达到变形的目的。当图形上下文被创建完毕时,事实上也创建了一个默认的变换矩阵,如果不对…

腾讯T4熬夜硬肝的全套微服务学习笔记,Github万星只是开始

写在前面 微服务架构被认为是 IT 软件架构的未来方向。热度虽高,但对于很多中小公司来说微服务却是遥不可及,因为团队规模和能力又反过来制约了他们采用新技术的步伐。很多人对于微服务技术也都有着一些疑虑,比如:微服务这技术虽然…

编译器原理简介(以Cortex-M3为例)

在"keil根目录\ARM\ARMCC\bin"下可以找到如下文件: 他们就是编译器内核,将工程代码转换成二进制文件,烧写进MCU中执行。 目录 C与汇编 典型的开发流程 编译工具报错举例 C与汇编 在CM3上编程,开发人员既可以使用C也…

CANoe-新型通信模式(SOA面向服务架构)

传统的以ECU为单元的整车通信架构,是面向信号的以CAN/LIN等总线为代表的经典通信模式。而以车载以太网为总线,SOME/IP或DDS等为中间件的SOA面向服务的新型通信模式,在以域控为单元的整车通信架构中被越来越多的使用 CANoe作为仿真和测试环境提供了统一的跨网络通信概念。这…

字符设备驱动_3:register_chrdev_region() 简单字符设备驱动的实现

概述&#xff1a;利用regist_chrdev_region() 函数接口注册同一类字符设备的多个子设备。 上一节一起整理了一遍注册一个简单字符设备的流程&#xff0c;接下来就来实现一个同一类字符设备的多个子设备驱动程序。 1. Demo 程序 #include <linux/module.h> #include <…

Linux篇 三、香橙派Zero2搭建Qt环境

香橙派Zero2系列文章目录 一、香橙派Zero2设置开机连接wifi 二、香橙派Zero2获取Linux SDK源码 三、香橙派Zero2搭建Qt环境 文章目录香橙派Zero2系列文章目录前言一、下载交叉编译工具二、编译QT库1.先去网站下载Qt的资源包2.解压3.开始移植&#xff1a;4.编译&#xff1a;5.安…

jQuery 查找方法

文章目录jQuery 查找方法查找祖先元素parent()parents()parentsUntil()查找后代元素children()find()contents()向前查找兄弟元素prev()prevAll()prevUnitl()向后查找兄弟元素next()nextAll()nextUntil()查找所有兄弟元素siblings()jQuery 查找方法 查找祖先元素查找后代元素向…

年度创新力十强,热点领域重要力量,典型案例报告入选!美创再获ISC安全百强多项殊荣

12月21日&#xff0c;数字安全界“奥斯卡”—ISC 2022数字安全创新能力百强&#xff08;简称“创新百强”&#xff09;重磅揭晓&#xff0c;本届评选由ISC平台发起&#xff0c;联合赛迪顾问、数世咨询、数说安全、看雪、安在等网络安全行业权威机构、媒体共同开启评选&#xff…

web开发前基础知识补充

什么是URL&#xff1f; URL是统一资源定位符&#xff0c;对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示&#xff0c;是互联网上标准资源的地址&#xff1b; 互联网上的每个文件都有一个唯一的URL&#xff1b; 基本URL包含模式&#xff08;或称协议&#xff0…

Kafka使用MirrorMaker同步数据的两种方式

1.前言 MirrorMaker 是 Kafka官方提供的跨数据中心的流数据同步方案。原理是通过从 原始kafka集群消费消息&#xff0c;然后把消息发送到 目标kafka集群。操作简单&#xff0c;只要通过简单的 consumer配置和 producer配置&#xff0c;然后启动 Mirror&#xff0c;就可以实现准…

不喜欢现在的工作,如何成功转行?

对现有行业职业公司不满、不喜欢&#xff0c;感觉此路不通&#xff0c;想换个跑道再战&#xff01; 我想说&#xff0c;请先冷静一下。 我有两个认识的人&#xff0c;一个成功转行&#xff0c;另一个失败。后面会有我的分析~~ 我的一位女性朋友A&#xff0c;小公司里工作近1…