有没有办法在MySQL中的元素是这样排序:MySQL的顺序由字母 - 数字
元素:
- 市1
- 市2
- 市10
- 市1A
当我做的ORDER BY列表看起来这样:
- 市1个
- 市1A
- 市10
- 市2
因为所有的答案不匹配我的特殊问题,我编辑我的问题。 还有数字后面带有字符的元素。观看例子
有没有办法在MySQL中的元素是这样排序:MySQL的顺序由字母 - 数字
元素:
当我做的ORDER BY列表看起来这样:
因为所有的答案不匹配我的特殊问题,我编辑我的问题。 还有数字后面带有字符的元素。观看例子
用mysql投: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html 在order by
声明。
我用这个和它工作得很好:
ORDER BY LENGTH(Elements), Elements
这只有在你的数据库包含“City XXXXX”形式的* only *元素时才有效。 –
此解决方案的问题是,它不再按字母排序。如果数字出现在“a”,“b”之后,它也不起作用。 – StrongLucky
正确,但在大多数情况下,我通常会面对这种情况,它功能强大且速度很快。现在在编辑问题中,我的答案是错误的,@Devart答案是正确的 – tommasop
你要提取由“城市”的数字部分和秩序。
SELECT city
FROM ...
ORDER BY (SUBSTRING(city,6)+0)
这会从“城市”(从第6个字符开始)抓取数字并转换为字符串进行排序。
如果城市名称长于或短于此示例,该怎么办? – dgw
如同,城市名称因行而异?然后它有点困难。数字始终是字符串中的最后一个单词吗? (另外,如果有特殊情况需要这些,请更新您的问题,以便我们给出适当的答案)。 –
尝试这一招 - 'ORDER BY列名+ 1',例如:
SELECT * FROM element
ORDER BY column_name+1;
[数值顺序从MySQL返回结果时(可能重复http://stackoverflow.com/questions/3356190/numeric -order-when-returns-results-from-mysql) –