Сортировка запросов для SQL - PullRequest
0 голосов
/ 23 ноября 2018

Как мы можем достичь следующего порядка сортировки, используя запрос в SQL?

Title_a
Title_b
Title_c
Title_d
Title_1a
Title_1b
Title_1c
Title_1d
Title_11a
Title_11b
Title_11c
Title_111a
Title_111b
Title_111c
Title_111d
Title_1111a
Title_1112a
Title_1112b
Title_12a
Title_12b
Title_12c
Title_1311a
Title_1311b
Title_1311c
Title_1311d

Я пробовал String sort = "CAST ("+ "title" + " AS INTEGER)";но результаты не удовлетворяют

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Для этих строк было бы хорошо, если бы не последний символ.

Таким образом, для этих строк вы можете упорядочить по порядку, предшествующему последнему символу, затем последнему символу.

select *
from yourtable
order by substr(title,1,length(title)-1), substr(title,length(title),1)
0 голосов
/ 23 ноября 2018

Расширяя мой комментарий, "Title_1311b" добавляется значение 1311 к значению ASCII "b".

Declare @col varchar(15)  = 'Title_1311b'


SELECT SUBSTRING(@col, PATINDEX('%[0-9]%', @col), PATINDEX('%[0-9][^0-9]%', @col) - PATINDEX('%[0-9]%', @col) + 1)  +  ascii(right(@col,1))+1

Можете ли вы добавить это в свой SQL-запрос и посмотреть, что происходит?

ORDER BY SUBSTRING(@col, PATINDEX('%[0-9]%', @col), PATINDEX('%[0-9][^0-9]%', @col) - PATINDEX('%[0-9]%', @col) + 1)  +  ascii(right(@col,1))+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...