Как отсортировать данные по буквенно-цифровым значениям

У меня есть эти значения: d1, d45, d79, d33, d100

Я хочу отсортировать эти переменные в порядке возрастания из моей таблицы.

Каков запрос, чтобы получить вывод как:

d1
d33
d45
d79
d100
0 sql
10.12.2008 09:58:55
Какая база данных? MySQL, sql-сервер, оракул, ...?
Greg 10.12.2008 10:03:16
4 ОТВЕТА

Извините, но не SQL-ответ. :) Для варианта с одной буквой только порядок по длине и альфа.

0
10.12.2008 10:15:58

То, что вы хотите, называется «натуральный сорт». Для Microsoft SQL Server 2005 см. Этот вопрос . Для других языков, см. (Например) этот другой вопрос .

1
23.05.2017 12:06:49

Если вы можете гарантировать шаблон / \ w \ d + / ...

В postgres:

select foo from bar order by cast(substring(foo from 2) as int)

..и подобное будет существовать для других разновидностей SQL. Дорогой ум.

редактировать: решение Android также выглядит хорошо:

..order by char_length(foo),foo
0
10.12.2008 10:21:56

Если мы можем предположить, что значения данных содержат только букву d и числовое значение, то вы также можете использовать:

select column from YourTable
order by convert(int, replace(column, 'd', ''))

Если он содержит какие-либо другие буквы, этот метод быстро становится непригодным для использования:

select column from YourTable
order by convert(int, 
        replace(replace(replace(replace(replace(
            column, 'a', ''),
                'b', ''),
                'c', ''),
                'd', ''), 
                'e', '')
        )
0
10.12.2008 16:11:16