2014-09-02 44 views
0

我有一个字符串,我的结果是排序。它由一个房间号,居民姓名和其他一些字段组成。字符串中整数的SQL顺序

实施例:

460, Bob Jones, ...... 
5, John Doe, ..... 

的问题是,当我为了这种方式,它把与前方具有大一个开始小的数字的数量少开始大量(即,460被放置之前5)。我如何让sql处理整个字符串中的整数,并根据整个数字进行排序,而不仅仅是第一个数字值?

+0

字符串不是整数,它会将数字排序为1,10,11,2,20,3,4,44等,如果它们存储为字符串(varchar)...首先评论是重新考虑你的数据库使用情况,存储字符串与整数值混合数据是可怕的做法。如果数据库结构不在您的作用域之内......使用子字符串,您可以在第一个逗号之前挑出整数,转换为整数并对其进行排序。你在哪个数据库上?字符串函数在它们之间不同 – Twelfth 2014-09-02 23:37:05

回答

1

您可以通过将字符串的初始部分转换为数字来完成此操作。但是,这取决于数据库。例如,在MySQL中,你可以值到一个整数刚刚加入+ 0转换:

order by string + 0 

在其他数据库,则需要分开到逗号,做一个转换。例如,在SQL Server中:

order by cast(left(string, charindex(',', string) - 1) as int)