我的sql排序varchar字段与数字部分

时间:2017-08-21 06:37:07

标签: php mysql

您好我有一个表data_table。我需要从表中获取所有标题。标题字段(类型varchar)包含如下的字母数字数据

title
---------
ab 2007
ab 2017
ba 2018
ba 2017
cd 2017
cd 2016

我想要的输出是

 title
---------
 ba 2018
 ab 2017
 ba 2017
 cd 2017
 cd 2016
 ab 2007

我试过CAST。但没有得到所需的结果

SELECT title, CAST(title as SIGNED) AS casted_column FROM data_table ORDER BY `title` DESC

2 个答案:

答案 0 :(得分:1)

如果您的标题总是以4位数结尾,您可以获取该数字并使用排序

      SELECT title
      FROM data_table
      ORDER BY substr(`title`, -4) DESC , title DESC

答案 1 :(得分:1)

使用RIGHT获取最后4位数字,然后将其转换为无符号并对其进行排序

SELECT title 
from tbl
order by cast(right(title,4) as unsigned) desc, title desc