码迷,mamicode.com
首页 > 数据库 > 详细

SQLServer 2008 R2 对同时含有数字和中文的字段进行排序

时间:2016-06-12 15:17:56      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

  若是数据库中的某一个字段名为bedNO,类型为nvchar,里面有{1,2,3,11,12,23,加2,加3}这些数据。

  此时我需要对这些数据进行排序,数字按大小拍前面,汉字按第一个字拼音首字母的顺序排后面,即需要1,2,3,11,12,23,加2,加3这样的结果。

  通常用order by bedNO排序的话,得到的结果是:1,11,12,2,23,3,加2,加3,无法得到需要的顺序。

  若是用order by cast(bedNO as int),则加2和加3这样的数据会报错,因为无法转换成int类型。

  而用order by LEN(bedNO),则可以得到结果为:1,2,3,11,12,23,加2,加3,满足我的需求。

  此时应该注意,如果在order by LEN(bedNO)后面还有其他字段需要排序,例如:order by LEN(bedNO),字段A,字段B,那么得到的结果很有可能不是希望的顺序。

  解决方法也很简单,只需要在LEN(bedNO)后面再对bedNO进行一次排序就可以了。例如:order by LEN(bedNO),bedNO,字段A,字段B这样的语句就可以得到理想的排序结果了。

SQLServer 2008 R2 对同时含有数字和中文的字段进行排序

标签:

原文地址:http://www.cnblogs.com/yupeiyuan/p/5577584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!