Intereting Posts
Запросить объекты DTO через WCF с помощью linq to sql backend Преобразование сценария MySQL в H2 SQL Server не освобождает память после выполнения запроса SQL Query, который возвращает таблицу, в которой каждая строка представляет дату в заданном диапазоне Самый быстрый postgreSQL эквивалент MySQL UTC_DATE () (получение даты UTC)? Группировка с интервалом 5 минут в интервале времени Настроить путь схемы Postgresql Почему запрос вставки иногда занимает так много времени? SQL-запрос занимает гораздо больше времени в коде, чем запрос db direct Избегайте SQL-инъекций по запросу с помощью tablename Получение записей между датой X и датой Y из базы данных Access? Поиск всех записей без связанных с ними MAX Дата для каждого работника Как объединить несколько таблиц, которые немного отличаются в столбцах Группировочные наборы: промежуточные итоги отображения в другом конкретном столбце?

Сортировать по последним 2 символам строка sql

Это результат моего запроса, но он не упорядочен правильно. Я хочу заказать последние 2 символа. Результат должен быть: Fa0 / 10 ниже Fa0 / 9.

Fa0/1 Fa0/10 Fa0/11 Fa0/12 Fa0/2 Fa0/3 Fa0/4 Fa0/5 Fa0/6 Fa0/7 Fa0/8 Fa0/9 Gi0/1 Gi0/2 Null0 Vlan1 

Мой запрос:

 SELECT inft.port FROM interfaces AS intf ORDER BY RIGHT(intf.port + 0, 2) 

второе редактирование: sqlfiddle

    Попробуй это:

     SELECT port FROM interfaces ORDER BY SUBSTRING_INDEX(port, '/', 1), CAST(SUBSTRING_INDEX(port, '/', -1) AS SIGNED) 

    Проверьте SQL FIDDLE DEMO

    ВЫВОД

     | PORT | |--------| | Fa0/1 | | Fa0/2 | | Fa0/3 | | Fa0/4 | | Fa0/5 | | Fa0/6 | | Fa0/7 | | Fa0/8 | | Fa0/9 | | Fa0/10 | | Fa0/11 | | Fa0/12 | | Gi0/1 | | Gi0/2 | | Null0 | | Vlan1 | 

    Почему вам нужно + 0 ?? Просто удалите его, и он будет работать.

     SELECT port FROM interfaces ORDER BY RIGHT(port, 2) 

    Демо-версия SQL Fiddle

    Вывод:

     PORT ------------ Fa0/1 Gi0/1 Gi0/2 Fa0/2 Fa0/3 Fa0/4 Fa0/5 Fa0/6 Fa0/7 Fa0/8 Fa0/9 Fa0/10 Fa0/11 Fa0/12 Null0 Vlan1 

    Порядок правилен – лексикографически.

    Вам нужно преобразовать их в число.

    ОБНОВЛЕНО

    Вам нужно сделать + 0 после извлечения двух последних символов, чтобы преобразовать их в число

     SELECT inft.port FROM interfaces AS intf ORDER BY SUBSTRING(intf.port, LOCATE('/', intf.port)+1, LENGTH(intf.port)) + 0