Как отсортировать целое число + строковое значение? - PullRequest
0 голосов
/ 27 октября 2011

Я использую PHP и MySQL.

У меня есть $pallet, и у него есть такие значения:

P01  
P02  
P12  
P20  
P05

Как я могу отсортировать эти значения как:

P01  
P02  
P05  
P12  
P20  

Ответы [ 2 ]

3 голосов
/ 27 октября 2011

Если значения всегда начинаются с '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;

EDIT

Вот пример того, как работает сортировка по алфавиту:

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
3 голосов
/ 27 октября 2011

Все они начинаются с P? Если это так, вы можете просто sort($pallet) или сделать ORDER BY yourcolumnhere ASC, так как их будет достаточно отсортировать в алфавитном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...