Sql Max()没有为类型为varchar的列返回正确的值。

问题描述 投票:0回答:1

我有一个sql表,里面有2列即ReqNo和Sr.No,类型为bigint和varchar,如下图所示的例子和查询。我试图获取Sr.No列与ReqNo列的最大值,但我得到了错误的值。请建议我纠正这个查询。

Request No  Sr.No
 120184       1
 120184       1.1
 120184       1.10
 120184       1.2
 120184       1.3
 120184       1.4
 120184       1.5
 120184       1.6
 120184       1.7
 120184       1.8
 120184       1.9

查询内容

select MAX(cast(SrNo as float)) as SrNo 
from tbl_Material_Req 
where Req_No='120184' 

上面的查询返回1.9作为最大值,但上面的表有1.10,大于1.9。但是上面的表的最大值是1.10,大于1.9。

我试过的方法是

  1. MAX(投(SrNo为十进制(10,2)))
  2. SELECT MAX(CAST(SUBSTRING(SrNo,3, LEN(SrNo)) AS float)) from tbl_Material_Req where Req_No='120184'
  3. select max(Convert(float, SrNo)) from tbl_Material_Req where isnumeric(SrNo) = 1 and Req_No='120184'.

但是上面的方法对我没用。

任何建议将被感激。

sql-server sql-server-2014
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.