以下是表格中sid列的内容(其中“S05201215”是 一个固定的字符串和Sring的剩余部分是一个序列 数)
S052012151
S052012152
S052012153
S052012154
S052012155
S052012156
我想对字符串的剩余部分进行排序(即
我附加到字符串S05201215
的数字
降序..我应该对以下查询做什么修改
获得所需的输出?
SELECT `sid` FROM `mytable` order by SUBSTRING(`sid`,10,length(`sid`))
答案 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
看起来很可疑,你正试图在数据库中实现自己的小数据库,但这是你应该不惜一切代价避免的事情 - 让数据库做它擅长的事情并正常化你的模特。