Как отсортировать файлы в базе данных?

lutskboy
На сайте с 22.11.2013
Offline
172
383

Привет

Есть в базе записи. Имена файлов.

01-глава

02-глава

...............

100-глава

и если сортировка идет по етому полю. то в итоге

01-глава

02-глава

...............

100-глава

11-глава

12-глава

то есть сортирует не так как хотелось бы. Есть идеи как сделать?

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#1

В смысле это у вас такое поле одной строчкой?

---------- Добавлено 27.06.2019 в 16:22 ----------

Ну тут короче дичь всякую нашёл:

https://stackoverflow.com/questions/8557172/mysql-order-by-sorting-alphanumeric-correctly

или же сортировать уже при выводе в PHP

---------- Добавлено 27.06.2019 в 16:23 ----------

Ещё такое:

https://stackoverflow.com/questions/11808573/sql-order-string-as-number

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
lutskboy
На сайте с 22.11.2013
Offline
172
#2

спасибо. тоже как раз нашел

https://stackoverflow.com/questions/11808573/sql-order-string-as-number

lutskboy
На сайте с 22.11.2013
Offline
172
#3

что то не все так гладко с версиями

хотелось бы ето поменять местами

https://www.db-fiddle.com/f/5pGehU1Gg8XmxvpNnDBWet/2

IL
На сайте с 20.04.2007
Offline
435
#4
lutskboy:
хотелось бы ето поменять местами


SELECT *
FROM `comm`
ORDER BY CAST(`vers` as DECIMAL(9,2)) desc
, LENGTH(vers) DESC
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
lutskboy
На сайте с 22.11.2013
Offline
172
#5

вообще не то

IL
На сайте с 20.04.2007
Offline
435
#6
lutskboy:
вообще не то

Вообще, похоже на "то", только "вверх ногами", как и по Вашей ссылке.. Но если излагать мысли яснее, то больше шансов получить "то"...

SELECT *
FROM `comm`
ORDER BY CAST(`vers` as DECIMAL(9,2)) ASC
, LENGTH(vers) ASC

Удачи)

---------- Добавлено 25.07.2019 в 20:24 ----------

p.s. А вообще, правильно "обычное" индексное поле создать, в которое поместить требуемый порядок, чтоб при каждом обращении CAST и прочие функции не пересчитывать..

lutskboy
На сайте с 22.11.2013
Offline
172
#7

тоже не то 2.41 идет раньше чем 2.8 а ето ASC


индексное поле создать, в которое поместить требуемый порядок

только вот как его расчитывать

Хелпзонович
На сайте с 15.06.2005
Offline
133
#8
lutskboy:
Привет

Есть в базе записи. Имена файлов.
01-глава
02-глава
...............
100-глава

и если сортировка идет по етому полю. то в итоге
01-глава
02-глава
...............
100-глава
11-глава
12-глава

то есть сортирует не так как хотелось бы. Есть идеи как сделать?


CREATE TABLE IF NOT EXISTS tramp
(glava varchar(10));

INSERT INTO `tramp` (`glava`)
VALUES ('01-глава'),('11-глава'),('100-глава'),('05-глава'),('02-глава');

select glava,CAST(LEFT(glava, LOCATE('-глава',glava)-1) as UNSIGNED) as ind from tramp order by ind


Вы там держитесь! Хорошего вам настроения. Здоровья.
IL
На сайте с 20.04.2007
Offline
435
#9
lutskboy:
только вот как его расчитывать

Можно рассчитывать так, например:

https://www.db-fiddle.com/f/5pGehU1Gg8XmxvpNnDBWet/4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий