mysql 一个字段多种排序方式

news/2024/12/28 11:43:20/文章来源:https://www.cnblogs.com/study10000/p/18637343

一、mysql 一个字段多种排序

  1. 数据
    id name
    1 tkj1000020-1.11test
    2 tkj1000020-1
    3 tkj1000020-2.1 test
    4 tkj1000020-2.2 test
    5 tkj1000020-2
    6 tkj1000020.1test
    7 tkj1000020.1test_001
    8 tkj1000020.2test
    9 tkj1000020.3test
    10 tkj1000020aest
    11 tkj1000020test
    12 tkj10000203333
    13 tkj1000020.Qtest
    14 tkj1000020-abb12
    15 tkj1000020.1 test
    16 tkj1000020.1test_002
  2. 排序规则
    • 字母优先 按 26 个字母顺序排列
    • 其次字符 ..[a-zA-Z] 需要排在 .[0-9] 前面
    • 其次字符 --[a-zA-Z] 需要排在 -[0-9] 前面
    • 其次字符 - 紧跟数字然后是字母,优先数字排序然后是字母排序
  3. sql
    SELECT * FROM 
    (SELECT Name,(CASE-- 1. 字母结尾,排第一WHEN Name REGEXP '.*[a-zA-Z]$' AND Name NOT REGEXP '[\\.\\-]' THEN 0-- 1. .[a-zA-Z] 排第二,并且整个数据不包含字符 '-'WHEN Name REGEXP '\\.[a-zA-Z]' AND Name NOT REGEXP '[\\-]'  THEN 1-- 1. .[0-9] 排第三,并且整个数据不包含字符 '-'WHEN Name REGEXP '\\.[0-9]'  AND Name NOT REGEXP '[\\-]'  THEN 2-- 1. -[a-zA-Z] 排第四WHEN Name REGEXP '\\-[a-zA-Z]' THEN 3-- 1. -[0-9] 排第五WHEN Name REGEXP '\\-[0-9]' THEN 4-- 1. -[0-9] 排第六WHEN Name NOT REGEXP '[\\.\\-]' THEN  5ELSE 6END) AS SortFROM Database.Table where Type ='tkj1000020'
    ) As Data ORDER BY Sort,Name; -- 先根据 Sort 排序,然后根据 Name 排序
    
  4. 排序结果
    id name sort
    1 tkj1000020aest 0
    2 tkj1000020test 0
    3 tkj1000020.Qtest 1
    4 tkj1000020.1 test 2
    5 tkj1000020.1test 2
    6 tkj1000020.1test_001 2
    7 tkj1000020.1test_002 2
    8 tkj1000020.2test 2
    9 tkj1000020.3test 2
    10 tkj1000020-abb12 3
    11 tkj1000020-1 4
    12 tkj1000020-1.11test 4
    13 tkj1000020-2 4
    14 tkj1000020-2.1 test 4
    15 tkj1000020-2.2 test 4
    16 tkj10000203333 5
  5. 待续

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《计算机基础与程序设计》第十四周学习总结

学期(2024-2025-1) 学号(20241412) 《计算机基础与程序设计》第十四周学习总结 作业信息这个作业属于哪个课程 <班级的链接> 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 <作业要求的链接> 2024-2025-1计算机基础与程序设计第十四周作业)教材学习内容…

2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结

2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标 <《C语言…

【Windows】 国内安装Scoop包管理器(镜像加速)

由于国内github访问不通畅,且多数开源软件托管在github,导致scoop体验极差,甚至安装Scoop这一步都无法进行。国内有位作者将scoop主程序托管在gitee,增加分流逻辑处理安装与更新所涉及的资源。 链接: https://gitee.com/scoop-installer/scoop 安装scoop主程序 1.1 初次安…

07 _ Load Average:加了CPU Cgroup限制,为什么我的容器还是很慢?

07 _ Load Average:加了CPU Cgroup限制,为什么我的容器还是很慢?你好,我是程远。今天我想聊一聊平均负载(Load Average)的话题。 在上一讲中,我们提到过CPU Cgroup可以限制进程的CPU资源使用,但是CPU Cgroup对容器的资源限制是存在盲点的。 什么盲点呢?就是无法通过CP…

高效搭建Nacos:实现微服务的服务注册与配置中心

Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署和管理分布式系统,特别是在微服务架构中。一、关于Nacos 1.1 简介 Nacos(Dynamic Naming and Configuration Service)是阿…

文章评分2

zz:https://blog.csdn.net/Y_sofun/article/details/74502970nodgd的文章由n个小写英文字母组成。文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数。nodgd在文章中用了排比、对偶、前后照应之类的手法,所以就有很多个子串是相同或者相近的。为了…

02 _ 理解进程(1):为什么我在容器中不能kill 1号进程?

02 _ 理解进程(1):为什么我在容器中不能kill 1号进程?你好,我是程远。 今天,我们正式进入理解进程的模块。我会通过3讲内容,带你了解容器init进程的特殊之处,还有它需要具备哪些功能,才能保证容器在运行过程中不会出现类似僵尸进程,或者应用程序无法graceful shutdow…

Camstar Portal 弹出层的使用:父子页面值传递

效果如下在Onload方法注册事件 protected override void OnLoad(EventArgs e) {try{base.OnLoad(e);SearchBtn.Click += new EventHandler(SearchBtn_Click);TranslateDetails.RowSelected += new JQGridEventHandler(TranslateDetails_SelectChanged);if (SEMI.AppCode.UIUtil…

如何使用飞书自定义机器人通知消息

大家有没有这样的需求,就是正在执行某个任务的时候希望任务完成之后给个通知,或者是软件运行报错的时候每天定期收集错误日志。 平时我们工作用的飞书,所有现在用飞书机器人把消息通知出来,非常简单 好用 的消息通知。 类似这样的消息通知还有企业微信也有。飞书拉群的时候添…

01 _ 认识容器:容器的基本操作和实现原理

01 _ 认识容器:容器的基本操作和实现原理你好,我是程远。作为一名工程师,我猜在过去的几年时间里,你肯定用过或者听人提起过容器(Container)。 说实话,容器这东西一点都不复杂,如果你只是想用的话,那跟着Docker官网的说明,应该十来分钟就能搞定。 简单来说,它就是个…

[Java SE] 核心源码精讲:java.net.URLConnection

概述: URLConnectionURLConnection是一个抽象类,表示指向URL【指定资源】的活动连接URLConnection可以检查服务器发送的首部,并相应地做出响应。 它可以设置客户端请求中使用的首部字段。 URLConnection可以用POST、PUT和其他HTTP请求方法向服务器发回数据; URLConnection类…