鸣谢:http://www.cnblogs.com/confusing/archive/2011/03/28/1997541.html
扩展:http://blog.sina.com.cn/s/blog_6825f09401015k5s.html
今天项目遇到一个varchar数据类型排序的问题
原来的SQL语句如下 :
mysql> SELECT sno FROM mytable WHERE sdate = '2011-03-15' ORDER BY sno;
显示结果
+------+ | sno | +------+ | 1 | | 10 | | 11 | | 12 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | +------+ 12 rows in set (0.00 sec)
问题原因:varchar类型只按照每一位进行排序 所以造成排序结果不正确
解决:
mysql> SELECT sno FROM mytable WHERE sdate = '2011-03-15' ORDER BY sno+0;
解决后结果:
+------+ | sno | +------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | +------+ 12 rows in set (0.00 sec)
本文讨论了SQL查询中遇到的VARCHAR数据类型排序不正确的现象,并提供了使用加法解决该问题的方法,同时提供了其他可能的解决方案。

3586

被折叠的 条评论
为什么被折叠?



