选择TEXT列的MAX INT值

Joh*_*ohn -2 sql oledb ms-access-2010

UserID    UserName  Password

1                abc               123
10               xyz               456
3                mno               254

SELECT MAX(UserId) AS UserId FROM UserLogin
Run Code Online (Sandbox Code Playgroud)

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

所有列都是TEXT数据类型

Xav*_*ica 10

您的查询正在返回,3因为它是考虑到字典顺序的较大值(任何开头都3被视为大于任何开头的1东西,就像开头的东西b比开头的东西更大a).

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

SELECT MAX(VAL(UserId)) AS UserId FROM UserLogin
Run Code Online (Sandbox Code Playgroud)

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


duf*_*ymo 5

确保列类型是数字而不是varchar或string.

  • 没关系.也许下一个出现的人会因为知道将字符串建模为字符串而产生重要影响而受益. (2认同)