2016-02-13 168 views
0

enter image description here不选择最高值

我使用的查询

select max(entry_no) from tbl_Invmaster 

但它给我ANS 9然而,最大值为10

+0

什么是正在使用的数据类型? – Timo

+5

是那一列的字符串类型?在这种情况下,max将根据字母顺序进行选择,而9将是最大的 – Tomas

+1

这是RDBMS的用途?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –

回答

0
select max(to_number(entry_no)) from tbl_invmaster 
+0

你更愿意解释你的代码为什么会解决操作问题。 –

1

你可能在数字一个VARCHAR列。在这些领域排序是alphabetcal order。那样9大于10。链接说明:

要确定两个字符串中的哪一个按字母顺序排在前面,则会比较它们的第一个字母。如果它们不同,则字母表中第一个字母出现在前面的字符串是按字母顺序排列的第一个字母。如果第一个字母相同,则比较第二个字母,依此类推。如果一个位置到达了一个字符串没有更多字母需要比较而另一个字符进行比较,那么第一个(较短的)字符串被认为是按照字母顺序排列的第一个。

你最好的解决方案是不存储号码VARCHAR列,而是使用适当的类型,例如INT。这样你的查询将返回正确的结果。

如果这不是您的选择,您可以将CAST的列设置为整数类型。例如在SQL Server中,您可以这样写:

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