MYSQL数据库字母数字混合字段排序问题
2023-09-11 14:19:21 时间
对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
相关文章
- 【MySQL】常见的mysql 进程state
- 【MySQL】批量删除mysql中数据库中的表
- 【MySql】mysql 数据库数据订正
- MySQL · TokuDB · TokuDB索引结构--Fractal Tree
- mysql数据库分组(GROUP BY)查询实例
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
- 使用mysql-connector-python操作MYSQL数据库
- R语言使用RMySQL连接及读写Mysql数据库 测试通过
- 数据库基础之Mysql(3)mysql删除历史binlog
- mysql之通过cmd连接远程数据库
- 数据库内核月报 - 2015 / 06-MySQL · 捉虫动态 · 任性的 normal shutdown
- ngrinder groovy 参数化登录账号和密码(以mysql数据库为例)
- Mysql索引数据结构有多个选择,为什么一定要是B+树呢?_面试 (MySQL 索引为啥要选择 B+ 树)
- 〖Python 数据库开发实战 - MySQL篇⑮〗- 数据表结果集的排序与去除重复(去重)
- Python:mysql-connector-python模块对MySQL数据库进行增删改查
- MySQL Study之--Mysql无法启动“mysql.host”
- Mysql数据库(表)的导出和导入小结
- mysql load_file在数据库注入中使用
- mysql 主从不同步处理--数据库初始化
- linux系统安装mysql数据库
- golang操作mysql数据库(Go-SQL-Driver/MySQL)
- MySQL快速生成大量测试数据1000万
- MySQL 配置, 避坑 sqlyog连接mysql错误码2058
- MySQL数据库系统
- MySQL 主从复制之 多个库同步到一个库 + 主从同步脚本