作者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/cn.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