Заказ путаницей - PullRequest
       3

Заказ путаницей

0 голосов
/ 25 марта 2012

Ниже приведено содержимое столбца sid в таблице (где «S05201215» - фиксированная строка, а оставшаяся часть Sring - последовательность чисел)

S052012151 
S052012152 
S052012153 
S052012154
S052012155
S052012156 

Я хочу отсортировать оставшиесячасть строки (то есть числа, которые я добавил в строку S05201215 в порядке убывания .. какие изменения я должен сделать в приведенном ниже запросе, чтобы получить желаемый результат?

SELECT `sid` FROM `mytable` order by SUBSTRING(`sid`,10,length(`sid`))

Ответы [ 4 ]

2 голосов
/ 25 марта 2012

Вы пробовали:

SELECT `sid` FROM `mytable` order by SUBSTRING(`sid`,10,length(`sid`)) DESC
1 голос
/ 25 марта 2012

Чтобы отсортировать в порядке убывания, просто добавьте "DESC" в конец вашего ORDER BY:

SELECT `sid`
FROM `mytable`
ORDER BY SUBSTRING(`sid`, 10, length(`sid`)) DESC

Однако, если значения sid имеют разную длину, вы, вероятно, захотитеприведите значения к числовому типу перед сортировкой:

SELECT `sid`
FROM `mytable`
ORDER BY CAST(SUBSTRING(`sid`, 10, length(`sid`)) AS SIGNED) DESC
1 голос
/ 25 марта 2012

Предполагая (предположения неверны), строка остается той же длины ВСЕ ВРЕМЯ , просто выполните простое order by sid

0 голосов
/ 25 марта 2012

Я не совсем понимаю ваши данные, но может быть что-то вроде этого:

  SELECT SUBSTRING(sid, 0, 10) AS prefix, SUBSTRING(sid, 11) AS suffix
    FROM mytable
ORDER BY suffix

Выглядит подозрительно, как будто вы пытаетесь реализовать свою собственную маленькую базу данных внутри базы данных, однако, чего вам следует избегать любой ценой - пусть база данных сделает то, что у нее хорошо, и нормализует вашу модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...