昨天早上,我的经理给了我一个新数据库,我必须在其中编写一些 SQL 存储过程。有一个列 MMs 是用于数值的,所以我知道 Sql Function MAX 可以处理它。但事实并非如此。
这是一个 varchar 列,其中随机存储从 1 到 41 的数值。我假设我的 SQL 语句:“SELECT MAX(MMS) FROM tbl”会给我 41 作为结果,但结果是 9。
后来我发现 MAX 在与字符串数据类型一起使用时会从列中取出第一个数字字母,然后给出其中的 MAX。
有人知道为什么会发生这种情况吗?
最佳答案
从这里开始:
http://msdn.microsoft.com/en-uk/library/ms187751.aspx
For character columns, MAX finds the highest value in the collating sequence.
如果您想按数字对列的内容进行排序,您可以执行以下操作:
ORDER BY len(mms), mms
关于sql - t-SQL 中 INT 和 VARCHAR 数据类型的 MAX 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11536209/