我正在使用 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/