鸣谢: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)