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

голоса
0

У меня есть следующие значения: d1, d45, d79, d33, d100

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

Что такое запрос, чтобы получить результат, как:

d1
d33
d45
d79
d100
Задан 10/12/2008 в 10:58
источник пользователем
На других языках...                            


4 ответов

голоса
1

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

Ответил 10/12/2008 в 11:17
источник пользователем

голоса
0

Если мы можем предположить, что значения данных содержат только букву 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', '')
        )
Ответил 10/12/2008 в 17:11
источник пользователем

голоса
0

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

В Postgres:

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

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

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

..order by char_length(foo),foo
Ответил 10/12/2008 в 11:21
источник пользователем

голоса
0

К сожалению, не SQL ответ на все. :) Для варианта с одной буквы только порядка по длине и альфа.

Ответил 10/12/2008 в 11:15
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more