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