如何按升序获取记录

我的数据是

101
102
w
200
11
NO
131
2
XYZ


而且我只想按升序返回数字。
数据类型为varchar

我想写查询为:

SELECT rno FROM  ml_entry
WHERE (rno NOT LIKE '%[a-z]%')
ORDER BY rno


上面的SQL创建以下输出:

101
102
11
131
154
2


但这是我想要的输出:

2
11
101
102
131
154


有什么建议吗?

最佳答案

我认为您应该执行以下操作:

SELECT rno, convert(rno, UNSIGNED INTEGER) as num
FROM ml_entry WHERE (rno NOT LIKE '%[a-z]%') ORDER BY num ASC


由于rno是varchar,因此您的排序将是词汇顺序。您需要将varchar转换为整数,然后对其进行排序。

这是demo

关于mysql - 如何仅按升序返回数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34680990/

10-10 08:44