2016-02-13 74 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