当数值是char或varchar排序
SELECT DATE, VALUE FROM tables
WHERE DATE='2009-12-31' ORDER BY VALUE
会变成这样,如图
很明显结果不是想要的数据排序效果,这是因为直接这么写是按照字符串排的序,如果想要按照数的大小排序,最简单,也是最常用的就是在VALUE后面写上‘+0’
修正后SQL
- ASC升序
SELECT DATE, VALUE FROM tables
WHERE DATE='2009-12-31' ORDER BY VALUE+0 ASC
- DESC降序
SELECT DATE, VALUE FROM tables
WHERE DATE='2009-12-31' ORDER BY VALUE+0 DESC
结果:
总结
VALUE+0
string类型数据转换为int类型
若不转换,排序规则是按照字符串规则,会导致数值顺序混乱,即字符串顺序。