У меня есть SQLite-базы данных с таблицей с номером документа следующего этой схемой:DBIx :: Class: Как я могу сортировать по нескольким подстрокам столбца?
16-145-45
16-127-30
16-141-42
16-122-14
15-090-04
15-089-15
15-089-05
Я хотел бы отсортировать ResultSet
на первую и последнюю часть числа, как это. Во-первых, все документы, начинающиеся с наивысшего двузначного префикса (16), отсортированы по последним двум цифрам, а затем - с последующим блоком и т. Д.
16-145-45
16-141-42
16-127-30
16-122-14
15-089-15
15-089-05
15-090-04
Есть ли способ сделать это в DBIx::Class
с каким-то пунктом заказ order_by
, или что бы подход?
Я попытался следующий, который не работает, потому что средняя часть числа также считается для сортировки:
my @rs = $self->search(undef,
{
order_by => { -desc => 'me.number' }
}
);
@Chankey Почему вы удалили sql-тег. Разве это не актуально? – dequid
Я не думаю, что ваш вопрос специфичен для SQL. Это больше о 'DBIx :: Class' и сортировке. –
Вы должны сказать, с каким движком базы данных вы работаете. Если вы не используете PostgreSQL, функция 'split_part' недоступна для вас. Если кто-то не говорит в любом случае, обычное предположение заключается в том, что вы используете MySQL. Обновите свой вопрос и теги. – Borodin