对MySQL数据表里的一个字符型字段排序,其内容格式为一位字母+顺序数字。数字没有前导零,长度不固定。
这种含字母的数字序列,排序出来的结果和我们想要的结果是不一样的,因为它不是纯数字,只能按字符规则排。
结果是A1,A10,A11,A12。。。。A19,A2,A20,A21。。。。
而不是我们通常感觉中的A1,A2,A3,。。。。。A10,A11,这样的结果。
想要得到正确的排序有两个办法。
一是改变字段内容结构,在数字前加上零,让所有的字段值拥有相同的长度。
二是不改变字段内容,在排序的SQL语句上想办法。
order by mid(column,2,10) +1
mid()第一个参数是字串内容,可以是字段名。第二个参数是起始字符的位置,我这里需要从第二个字符开始。第三个参数是需要取得的长度,要选一个可以包含所有字段内容长度的值,宁大勿小。
但这样取出来的还只是“数字内容的字符串”,对它排序仍然使用字符规则,不会得到我们想要的结果。
这时需要给这个结果再加上一个数值,让MySQL对它进行一次算术运算,然后得到的就是一个整型值,这时再排序就是数字顺序的结果了。
例如:
SELECT * FROM equipmentmes ORDER BY MID(eqid,2,10) +1
搜索
随笔分类
- AES(1)
- docker(5)
- Excel(1)
- git(12)
- JAVA(86)
- JS(9)
- Laravel(5)
- Linux(42)
- MySQL(59)
- PHP(20)
- python(3)
- Redis(3)
- Spring Cloud(7)
- SqlServer(1)
- SVN(2)
- tomcat(6)
- VUE(17)
- windows(4)
- Yii(4)
- 图片上传(4)
- 微信(10)
- 小程序(3)
- 更多
随笔档案
- 2024年8月(2)
- 2024年7月(2)
- 2024年6月(1)
- 2024年5月(4)
- 2023年12月(1)
- 2023年11月(3)
- 2023年10月(2)
- 2023年6月(1)
- 2023年5月(4)
- 2023年4月(2)
- 2023年3月(2)
- 2023年1月(1)
- 2022年8月(5)
- 2022年7月(1)
- 2022年6月(2)
- 2022年5月(8)
- 2022年4月(10)
- 2022年3月(7)
- 2022年2月(9)
- 2022年1月(6)
- 2021年12月(6)
- 2021年11月(5)
- 2021年10月(6)
- 2021年9月(6)
- 2021年8月(14)
- 2021年7月(6)
- 2021年6月(9)
- 2021年5月(3)
- 2021年4月(7)
- 2021年3月(3)
- 2021年2月(9)
- 2021年1月(6)
- 2020年12月(7)
- 2020年11月(2)
- 2020年10月(3)
- 2020年9月(2)
- 2020年6月(6)
- 2020年5月(14)
- 2020年4月(9)
- 2020年3月(6)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(7)
- 2019年11月(3)
- 2019年10月(7)
- 2019年9月(2)
- 2019年8月(5)
- 2019年7月(1)
- 2019年5月(3)
- 2019年4月(5)
- 2019年1月(5)
- 2018年12月(2)
- 2018年11月(36)
- 2018年2月(4)
- 更多
最新评论
- 1. Re:vue 调用 js 获取的今日、本周、本月、本年起始和结束日期
秒哇
- --Jackma1
- 2. Re:Prepared statement needs to be re-prepared问题
设置那两个参数不能彻底解决这个问题
- --net程序-十天
- 3. Re:disabled属性获取不到name值
保存之前,移除disable,成功后又添加
- --lfk0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~