不选择最大值

时间:2016-02-13 20:18:00

标签: sql

enter image description here

我正在使用查询

select max(entry_no) from tbl_Invmaster

但它给了我9但是最大值是10。

2 个答案:

答案 0 :(得分:1)

您可能在VARCHAR列中有数字。在这些字段中排序是alphabetcal order。这样9大于10。链接说明:

  

要确定两个字符串中的哪一个按字母顺序排在第一位,则会比较它们的第一个字母。如果它们不同,则字母表中第一个字母较早的字符串是按字母顺序排在第一位的字符串。如果第一个字母相同,则比较第二个字母,依此类推。如果达到一个位置,其中一个字符串没有更多的字母要比较而另一个字符串,则第一个(较短的)字符串被认为是按字母顺序排在第一位。

您最好的解决方案不是在VARCHAR列中存储数字,而是使用相应的类型,例如INT。这样你的查询就会返回正确的结果。

如果这不是您的选项,您可以将列CAST转换为整数类型。例如,在SQL Server中你会写:

select max(CAST(entry_no AS INT)) from tbl_Invmaster

答案 1 :(得分:0)

select max( to_number( entry_no )) from tbl_invmaster