MYSQL数据库字母数字混合字段排序问题

对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

时间: 2024-12-10 09:22:18

MYSQL数据库字母数字混合字段排序问题的相关文章

MySQL数据库修改字段名、字段类型、字段长度

1.MySQL数据库中,修改字段SQL如下: alter table AppVersion change version versionCode varchar(50) DEFAULT NULL COMMENT '版本'; 执行结果如下: alter table AppVersion change version versionCode varchar(50) DEFAULT NULL COMMENT '版本' > OK > 时间: 0.313s 字段类型长度.默认值.注释可根据自己需要进行删

mysql 数据库创建表 id 字段的 sql 设置

`id` int unsigned not null auto_increment primary key, 1.SQL PRIMARY KEY 约束PRIMARY KEY 约束唯一标识数据库表中的每条记录.主键必须包含唯一的值.主键列不能包含 NULL 值.每个表都应该有一个主键,并且每个表只能有一个主键. 2.AUTO_INCREMENT 字段我们通常希望在每次插入新记录时,自动地创建主键字段的值.我们可以在表中创建一个 auto_increment 字段. 3.unsigned 无符号整型

mysql数据库、表、字段、记录:增、删、改、查

数据库.表.字段.记录:增.删.改.查.分类进行学习,重点是查询. /* 数据库.表.字段.记录:增.删.改.查 */ -- 1.数据库:增删改查 create datebase if not exists jkxy; drop database if exists jkxy; rename database jkxy to jikexueyuan; --这条语句官方说不能用了 show databases; use jikexueyuan; /* 1.CREATE DATABASE new_d

含有对象的List集合实现字母数字混合排序

List<PageData> varList = [{BOMCode=10A, mantotal=4}, {BOMCode=10B, mantotal=1}, {BOMCode=11A, mantotal=1}, {BOMCode=11B, mantotal=1}, {BOMCode=12A, mantotal=1}, {BOMCode=1A, mantotal=9}, {BOMCode=2A, mantotal=168}, {BOMCode=2B, mantotal=57}, {BOMCod

关于spring jdbc 查询mysql数据库时,数据集字段名有别名返回的不是别名而是原始字段名

select语句字段含有别名 eg:select xm fullname from t_user; JdbcTemplate查询返回的结果集 xm '张三' 'xxx' 'xxxx' 期待结果是: fullname '张三' 'xxx' 'xxx' 解决办法:在数据库链接url后面跟上?useOldAliasMetadataBehavior=true

DataTable 数据导入MS ACCESS 数据库中 数字类型字段为空的解决办法

1 string strSql = 2 "insert into GongCheng (GCSY,GCBH,GCBHOLD,GCMC,GCKCJD,GCJSDW,GCSJDW,GCKCDW,GCSGDW,GCDD,GCX,GCY,GCBG,GCQSLC,GCJSLC,GCZXDH,GCZXLC,GCZXLX,GCZXSM,GCYX,GCZBZ,GCBLC,GCBZ,PZFA,BZ,GCSJ,DTABLE,ZGSW,DZJL,DZLD,JCMS,JQBS,FGCH,TLX,CDLB,YHZS,GC

中文,字母,数字混合验证码

/// 产生随机的混合编码-使用文字,字母,数字混合        /// </summary>        /// <param name="mixLength"></param>        /// <returns></returns>        private string GetRndMix(int mixLength)        {            String Vchar = "0,1

MySQL 数据库入门操作

启动mysqld:在命令行启动mysql时,如不加"--console",启动.关闭信息不在界面中显示,而是记录在安装目录下的data目录里,文件名一般是hostname.err,通过此文件查看mysql的控制台信息.关闭mysqladmin -u root shutdown命令行连接服务器mysql -h localhost -u root -proot  (-p 和密码直接没有空格)或者 mysql -h localhost -u root -p 回车根据提示再输入密码rootmy

linux操作mysql数据库常用简单步骤

连接mysql数据库: 主要看mysql安装在哪一个目录下: mysql -h主机地址 -u用户名 -p用户密码 或者mysql -h ip地址 -u  zaiai -p zaiai 或者/var/email/mysql/bim/mysql mysql数据库中sql修改字段类型 首先说明一下: 在mysql数据库中可以对表的字段类型进行修改的,这样的好处是正常情况下原来的数据不会丢失的. 它的语法规则是:alter table newexample modify id char(20); 这里详