作者yeahhuman (人)
看板Python
標題[問題] SQL MAX()問題
時間Sat Oct 5 16:01:36 2019
想請問一個奇怪的錯誤
以下是兩張圖片
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
請問我有忽略甚麼嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.114.118 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1570262501.A.C69.html
1F:→ justoncetime: 有database專板.另外圖片放imgur之類的,放你個人空 10/05 16:08
2F:→ justoncetime: 間如果問完就刪,對別人就失去參考價值. 10/05 16:09
3F:→ yeahhuman: 好的,謝謝,不過那些圖都是我工作備份,不會刪的 10/05 16:15
4F:→ justoncetime: 你這問題不就文字排序的問題/特性啊 10/05 16:38
5F:→ justoncetime: 可以思考看看如果你要對文字排序時會怎麼做, 10/05 16:44
6F:推 sqrt1089: select MAX(CONVERT(INT, IndexNo)) from markTable 10/05 17:39
7F:→ sqrt1089: 應該是字串問題,左邊對齊,examNO有補0所以沒問題 10/05 17:41
8F:→ justoncetime: 然後用關鍵字(如:字串 排序)看看一般邏輯上是怎做的 10/05 17:41
10F:推 sqrt1089: 或是自己補0跟examNo一樣情境XD 10/05 17:58
11F:→ sqrt1089: Select Max(Right('00000000' + Cast(IndexNo as varcha 10/05 17:59
12F:→ sqrt1089: r),8)) from markTable 10/05 17:59
13F:推 bboybighead2: 你是對vchar進行運算,若想得到你預想的結果須先轉 10/14 01:46
14F:→ bboybighead2: 為int。 10/14 01:46