[问题] 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