-1
UserID    UserName  Password

1                abc               123
10               xyz               456
3                mno               254

SELECT MAX(UserId) AS UserId FROM UserLogin

当我运行此查询时,它给了我 3 而不是 10

所有列都是 TEXT 数据类型

4

3 回答 3

13

您的查询正在返回3,因为它是考虑字典顺序的最大值(以 开头的任何内容都3被认为大于以 开头的任何内容1,就像以 开头的b内容大于以 开头的任何内容一样a)。

使用该VAL函数将 TEXT 列转换为数值:

SELECT MAX(VAL(UserId)) AS UserId FROM UserLogin

但是,如果您担心性能,则应该将此列设为数字。考虑到您正在为表中的每一行调用一个函数。此外,它不会使用该列可能具有的任何索引。

于 2013-05-03T09:28:54.887 回答
5

确保列类型是数字而不是 varchar 或字符串。

于 2013-05-03T09:26:45.587 回答
3

尝试改变

SELECT MAX(val(UserId)) AS UserId FROM UserLogin
于 2013-05-03T09:32:48.420 回答