@Angelxalfa

Сортировка данных из текстового поля как числа?

Здравствуйте!
Есть таблица с полями, к которых содержаться смешанные данные (цифры с буквами).
При получении данных из этой таблице нужно их сортировать как числа.
Раньше работал в связке с MySQL, но сейчас потребовалось перейти на Postgress
использовал запрос
select data from ".$prefix."$table WHERE pre_data = '$pre_data' ORDER BY (data+0)


В MySQL такой запрос проходил без проблем, но postgres дает ошибку.
Как можно осуществить желаемое в postgres?

В итоге решил через сортировку в массиве методами php
// Получение списка столбцов
foreach ($out2 as $key => $row) {
$volume[$key] = $row['data'];
}
//Сортировка
array_multisort($volume,SORT_NUMERIC, SORT_ASC, $out2);
  • Вопрос задан
  • 2722 просмотра
Пригласить эксперта
Ответы на вопрос 4
@krypt3r
Извлеките из столбца data все числовые данные, по которым нужно сортировать, в новый столбец числового типа и сортируйте по нему.
Ответ написан
He11ion
@He11ion
PHP-monkey
SELECT * FROM unnest(array['1','2б','2а','1а','2']) a ORDER BY a ASC;

дает
1

2



на посгресе 9.4.1
Ответ написан
@mnbck
Для oracle работают вот такие приемы - www.techonthenet.com/oracle/questions/sort1.php
Для Postgre, думаю тоже должно подойти.
Ответ написан
Комментировать
sokollondon
@sokollondon
ORDER BY substring(column_name, '^[0-9]+')::int

Или так, чтобы после числа буквы сортировались по алфавиту
ORDER BY substring(column_name, '^[0-9]+')::int, substring(column_name, '[^0-9]*$')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы