История изменений
Исправление olegd, (текущая версия) :
отрезать scan/ если они одинаковы для всех.
Этого оказалось недостаточно. Нужно обрезать весь текст и преобразовать в числа, иначе всё равно сортирует 79-8-80.
Но оказалось, в sqlite есть CAST.
Рабочий вариант:SELECT * FROM files ORDER BY CAST(REPLACE(SUBSTR(file, 6), '.txt', '') AS int);
Спасибо.
Тогда заодно связанный вопрос: почему в обеих базах работает
SELECT *, CAST(REPLACE(SUBSTR(file, 6), '.txt', '') AS int) AS b FROM files ORDER BY b;
но
SELECT *, REPLACE(SUBSTR(file, 6), '.txt', '') AS b FROM files ORDER BY CAST(b as int);
работает в SQLite, но в PostgreSQL выдаёт ошибку «column «b» does not exist»?
Исходная версия olegd, :
отрезать scan/ если они одинаковы для всех.
Этого оказалось недостаточно. Нужно обрезать весь текст и преобразовать в числа, иначе всё равно сортирует 79-8-80.
Но оказалось, в sqlite есть CAST.
Рабочий вариант:select * from files order by cast(replace(substr(file, 6), '.txt', '') as int);
Спасибо.
Тогда заодно связанный вопрос: почему в обеих базах работает
select *, cast(replace(substr(file, 6), '.txt', '') as int) as b from files order by b;
но
select *, replace(substr(file, 6), '.txt', '') as b from files order by cast(b as int);
работает в SQLite, но в PostgreSQL выдаёт ошибку «column «b» does not exist»?