php - 如何对整数+字符串值进行排序?

标签 php mysql sorting

我正在使用 PHP 和 MySQL。

我有 $pallet,它的值如下:

P01  
P02  
P12  
P20  
P05

如何将这些值排序为:

P01  
P02  
P05  
P12  
P20  

最佳答案

如果值始终以“P”开头,那么您可以去掉“P”,将其余部分转换为数字,然后ORDER BY 该数字 ASC。因此:

select yourcolumn 
from (
select cast(replace(yourcolumn,'P','') as unsigned) as rank,
yourcolumn from yourtable) t
order by t.rank asc;

编辑

这是一个按字母顺序排序的例子:

create table pallet (id int unsigned not null primary key auto_increment,
pallet varchar(5));

insert into pallet (pallet) values ('P01');
insert into pallet (pallet) values ('P02');
insert into pallet (pallet) values ('P12');
insert into pallet (pallet) values ('P20');
insert into pallet (pallet) values ('P05');
insert into pallet (pallet) values ('P145');

select * 
from pallet 
order by pallet asc;

结果:

id  pallet
--  ------
1   P01
2   P02
3   P05
4   P12
5   P145
6   P20

不是我们想要的!

select pallet
from (
select cast(replace(pallet,'P','') as unsigned) as rank,
pallet from pallet) t
order by t.rank asc;

结果:

id  pallet
--  ------
1   P01
2   P02
3   P05
4   P12
5   P20
6   P145

关于php - 如何对整数+字符串值进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912105/

相关文章:

wordpress - 如何写没有标题的wp_mail

c# - 为windows窗体应用程序计算mysql数据库中一列的平均值

c# - 如何对 ArrayList(int) 进行排序

java - 保持矩形的角准确

algorithm - 线性时间的拓扑排序?

php - 如何在没有while循环的情况下查看表值?

php - 如何在我的网站上显示来自 Facebook 的个人资料?

php - 从 PHP 中执行我的程序?

mysql - 查询基于 GROUP BY 添加增量字段

mysql - 如何编写mysql查询来实现以下类型的连接(Join based on value of a column)