按条款排列混淆

时间:2012-03-25 19:19:29

标签: mysql sql database

以下是表格中sid列的内容(其中“S05201215”是 一个固定的字符串和Sring的剩余部分是一个序列 数)

S052012151 
S052012152 
S052012153 
S052012154
S052012155
S052012156 

我想对字符串的剩余部分进行排序(即 我附加到字符串S05201215的数字 降序..我应该对以下查询做什么修改 获得所需的输出?

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

4 个答案:

答案 0 :(得分:2)

你试过了吗?

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

答案 1 :(得分:1)

假设(假设不好)字符串保持相同的长度所有时间,只需做一个简单的order by sid

答案 2 :(得分:1)

要按降序排序,只需将“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

答案 3 :(得分:0)

我不太了解您的数据,但可能是这样的:

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

看起来很可疑,你正试图在数据库中实现自己的小数据库,但这是你应该不惜一切代价避免的事情 - 让数据库做它擅长的事情并正常化你的模特。