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