我有一个 SQL 数据库,其中有一个名为premisis
。我希望选择最高的行premisisnumber
.
这是我正在使用的 SQL:
SELECT max(premisisnr) AS premisisnr FROM premisis
问题是,SQL Server 返回错误的值!在我的桌子上有一排premisisnumber
10,但使用上面的 SQL 语句返回的行为premisisnumber
9.
为什么?另外,我该如何解决这个问题?
听起来 premisisnr 不是一个数字值,而是一个 char 或 varchar 值。发生的情况是 SQL Server 根据字符串而不是数值进行排序。因此 10 位于 9 之前,因为 1 作为字符位于 9 之前。
理想的解决方案是将 premisisnr 字段更改为 int 或数值。如果这不是一个选择,您可以执行以下操作:
如果 premisisnr 是整数值:
select max(cast(premisisnr as int)) as premisisnr from premisis
如果 premisisnr 是十进制值,则必须将其转换为所需的精度和小数位数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)