MAX()、MIN()是取极值的函数,它会根据字段的数据类型进行数据的获取,如下:
eg1:
select MAX(intColumn) from table —— intColumn为int类型字段,MAX函数会将表中的该字段以数值大小排序,再取最大值
eg2:
select MAX(varColumn) from table—— varColumn为varchar类型,MAX则会依次根据字符串的每一个字符编码进行比较进行排序,比如‘cas’、‘asd’、‘d’三者比较取‘d’,再比如‘9’,‘1235’,‘99’三者比较取‘99’,因为第一个字符比较:‘9’和‘99’的第一个字符‘9’比‘1235’的‘1’,当‘9’、‘99’的第一个字相同时比价下一个字符,则此时比较出‘99’更大
注意:以上的列子主要为一个sql的bug铺垫
当我们想自己模拟一个自增ID时,不小心或者需求要求把ID字段设置为varchar,这里使用MAX要提前把ID转化成int类型【convert(int,ID)】,否则直接使用ID增加到10时则不会再增加,因为MAX取值都是9,9+1都是10,所以切记用MAX之前一定要转换数据格式,如下:
select MAX(CONVERT(int,varColumn)) from table