Я пытаюсь получить список данных в порядке убывания из моей базы данных.Но он не дает желаемого результата.
testing
id(pk), fiscal_no
Мой запрос : SELECT * FROM `testing` ORDER BY fiscal_no DESC
SELECT * FROM `testing` ORDER BY fiscal_no DESC
Для этого запроса я получаю этот результат
Но я хочу получить результат, который должен быть описан fiscal_no следующим образом: fiscal_no last num
fiscal_no
Доступен ли какой-либо запрос для такого результата?
Я бы использовал substring_index():
substring_index()
order by substring_index(fiscal_no, '#', -1) desc, fiscal_no desc
Если вы знаете, что это всегда последние три символа, то вы можете использовать right():
right()
order by right(fiscal_no, 3) desc, fiscal_no desc
Проверьте, может ли reverse или cast что-то сделать в этом
reverse
cast
ORDER BY REVERSE(fiscal_no) DESC OR ORDER BY CAST(fiscal_no AS UNSIGNED) DESC
Вы можете попробовать:
SELECT * FROM testing ORDER BY SUBSTRING(fiscal_no,13,3) DESC;
SUBSTRING Синтаксис функции:
SUBSTRING
SUBSTRING(string, start, length)
Но я предлагаю вам лучше переделать схему таблицыВаш дизайн таблицы не соответствует 1NF .
Предполагая, что целочисленное значение - это последние 3 символа во всех значениях в столбце fiscal_no, вы можете сделать один из обходных путей:
SELECT * FROM testing ORDER BY substring(fiscal_no,-3) DESC;
Попробуйте это
SELECT * FROM testing ORDER BY substring(fiscal_no,13,3) DESC;
SYN # JOB # F EB на самом деле раньше SYN # JOB # J AN в порядке убывания.
Вы должны рассмотреть функцию SUBSTRING (илииногда SUBSTR) для сортировки, начиная с 13-го символа столбца fiscal_no.
SUBSTR
Если вы используете MySQL, то здесь ref .Оператор сортировки должен быть:
ORDER BY SUBSTRING(fiscal_no, 13) DESC