我有一个带有表的SQL数据库premisis.我希望选择最高的行premisisnumber.
这是我正在使用的SQL:
SELECT max(premisisnr) AS premisisnr FROM premisis
Run Code Online (Sandbox Code Playgroud)
问题是,SQL Server返回错误的值!在我的表中,我有一行premisisnumber10,但使用上面的SQL语句返回premisisnumber9 行.
为什么?另外,我该如何解决这个问题?
mjs*_*ger 15
这听起来像premisisnr不是数字值,而是char或varchar值.发生的事情是SQL Server基于字符串而不是数值进行排序.因此10在9之前出现,因为1作为角色出现在9之前作为角色.
理想的解决方案是将premisisnr字段更改为int或数值.如果这不是一个选项,您可以执行以下操作:
如果premisisnr是一个整数值:
select max(cast(premisisnr as int)) as premisisnr from premisis
Run Code Online (Sandbox Code Playgroud)
如果premisisnr是十进制值,则必须将十进制值转换为所需的精度和比例.
| 归档时间: |
|
| 查看次数: |
5818 次 |
| 最近记录: |