字符串中的SQL按整数排序

字符串中的SQL按整数排序,sql,sql-order-by,Sql,Sql Order By,我有一个字符串,我的结果按它排序。它由房间号、住户姓名和其他几个字段组成 例如: 460, Bob Jones, ...... 5, John Doe, ..... 问题是,当我以这种方式订购时,它将以小数字开头的大数字放在以大数字开头的小数字之前(即,460放在5之前)。如何让sql处理字符串中的整个整数,并根据整个数字而不仅仅是第一个数字值进行排序?您可以通过将字符串的初始部分转换为数字来实现这一点。但是,这取决于数据库。例如,在MySQL中,只需添加+0,即可将值转换为整数: order

我有一个字符串,我的结果按它排序。它由房间号、住户姓名和其他几个字段组成

例如:

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

问题是,当我以这种方式订购时,它将以小数字开头的大数字放在以大数字开头的小数字之前(即,460放在5之前)。如何让sql处理字符串中的整个整数,并根据整个数字而不仅仅是第一个数字值进行排序?

您可以通过将字符串的初始部分转换为数字来实现这一点。但是,这取决于数据库。例如,在MySQL中,只需添加
+0
,即可将值转换为整数:

order by string + 0
在其他数据库中,您需要将数据分成逗号并进行转换。例如,在SQL Server中:

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

字符串不是整数,如果数字存储为字符串(varchar),它将按1、10、11、2、20、3、4、44等对数字进行排序。。。第一条评论是重新考虑数据库的使用,将整数值字符串与数据混合存储是一种可怕的做法。如果数据库结构超出了您的范围…使用子字符串,您可以在第一个逗号之前选择整数,将其转换为整数,然后在此基础上排序。你在哪个数据库上?字符串函数在它们之间有所不同