LINUX.ORG.RU

История изменений

Исправление 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»?