[問題] SQL MAX()問題

作者: yeahhuman (人)   2019-10-05 16:01:36
想請問一個奇怪的錯誤
以下是兩張圖片
https://drive.google.com/open?id=1ldaCI_a8TmhnWZWyys0WinHI38bIEaKy
https://drive.google.com/open?id=1C6jiAlCr8aej_Knjn1bsBu6DbBd4nVxV
我的資料庫是沒有PK的,因為特殊原因基本上都是斷斷續續的資料。
所以我想以圖中的indexNo作為某些操作的根據,但是以下的SQL語法卻導致錯誤:
SELECT MAX(indexNo) FROM markTable
以第一個案例 當我的indexNo最大值還沒超過9,999時,它只會傳出993
以第二個案例 當我的indexNo最大值還沒超過99,999時,它只會傳出9998
但是我以第二個來抓:
SELECT MAX(examNo) FROM markTable
一切正常
在設定上兩者一樣,唯一差別是examNo永遠是8個數字,沒滿八個數字前面全補0
,indexNo就是單純數字轉字串
https://drive.google.com/open?id=127bKtjU8F5mKVyQ4J2sRMXBI_lLnj00B
請問我有忽略甚麼嗎
作者: justoncetime (台北叢林好冷~)   2019-10-05 16:08:00
有database專板.另外圖片放imgur之類的,放你個人空間如果問完就刪,對別人就失去參考價值.
作者: yeahhuman (人)   2019-10-05 16:15:00
好的,謝謝,不過那些圖都是我工作備份,不會刪的
作者: justoncetime (台北叢林好冷~)   2019-10-05 16:38:00
你這問題不就文字排序的問題/特性啊可以思考看看如果你要對文字排序時會怎麼做,
作者: sqrt1089 (李崩子)   2019-10-05 17:39:00
select MAX(CONVERT(INT, IndexNo)) from markTable應該是字串問題,左邊對齊,examNO有補0所以沒問題
作者: justoncetime (台北叢林好冷~)   2019-10-05 17:41:00
然後用關鍵字(如:字串 排序)看看一般邏輯上是怎做的
作者: sqrt1089 (李崩子)   2019-10-05 17:45:00
https://i.imgur.com/U54ZheR.png或是自己補0跟examNo一樣情境XDSelect Max(Right('00000000' + Cast(IndexNo as varchar),8)) from markTable
作者: bboybighead2 (腳毛會唱歌)   2019-10-14 01:46:00
你是對vchar進行運算,若想得到你預想的結果須先轉為int。

Links booklink

Contact Us: admin [ a t ] ucptt.com