sql - t-SQL 中 INT 和 VARCHAR 数据类型的 MAX 函数

标签 sql t-sql max

昨天早上,我的经理给了我一个新数据库,我必须在其中编写一些 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/

相关文章:

sql - 获取两个日期时间之间的所有重复行。

t-sql - 我可以将 PARTITION BY 与 GROUP BY 子句一起使用吗? SQL Server 2012

python - 如何在列表列表中找到元素和最大的列表?

Mysql select for update - 它没有锁定目标行。我如何确保它确实如此?

java - 在 Java 中使用 LIMIT 的 MYSQL 语法错误

sql - 在 Redshift 中将 MM/DD/YYYY 转换为 YYYYMMDD

Mysql IN子句全表扫描

t-sql - DB2相当于SQL的GO?

sql - 如何加速 "max()-searching"SQL 子查询

mysql - 如何计算表中多个值的出现次数并选择最大值