SQL排序查询

时间:2018-11-23 12:51:55

标签: android sql sqlite

如何使用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 :(得分:1)

在我的评论“ 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

答案 1 :(得分:1)

对于那些字符串,如果不是最后一个字符,它将很好地排序。

因此,对于这些字符串,您可以按最后一个字符之前的顺序进行排序,然后按最后一个字符进行排序。

select *
from yourtable
order by substr(title,1,length(title)-1), substr(title,length(title),1)