MySQL数据表对数据列排序(技巧)

本文是个人学习笔记,内容主要包含数据表里的数据排序,学习文档来自易百教程:http://www.yiibai.com/mysql/

ORDER结合FIELD()对列取值映射后排序

select orderNumber,status from orders 
order by field(status,'In Process','On Hold','Cancelled','Resolved','Disputed','Shipped');
#对orders数据表status按自定义映射,将'In Process','On Hold','Cancelled','Resolved','Disputed','Shipped'映射成1,2,3,4,5,6后按数字排序

数据列中字母和数字同时存在时排序方法

create table if not exist items(id int auto_increment primary key,
                                item_no varchar(255) not null);

insert into items(item_no) values('1'),('1C'),('10Z'),('2A'),('2'),('3C'),('20D');

select item_no from items order by item_no;
#排序结果10开头的项和1在一起,不在2之后
#将item_no列分成两列:prefix 和 suffix.prefix列存储item_no的数字部分,suffix列存储字母部分.
#查询首先对数据进行数字排序,并按字母顺序对数据进行排序.
#这个解决方案的缺点是必须在插入或更新之前将item_no值分成两部分.此外,当查询数据时,必须将这两列组合成一列.

select item_no from items order by cast(item_no as unsigned),item_no;
#使用类型转换将item_no数据转换为无符号整数.其次,使用ORDER BY子句对数字进行数字排序,然后按字母顺序排列.
#MySQL支持各种字符集,如latin1/utf8等.可用SHOW CHARACTER SET语句来获取MySQL数据库服务器支持的所有字符集
#用LENGTH函数获取,以字节为单位的字符串长度
#用CHAR_LENGTH函数获取,以字符为单位的字符串的长度
set @s=convert('Mysql' using latin1);
select char_length(@s),length(@s);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值