SQLMAX()函数处理字符型字段
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQLMAX()函数处理字符型字段
假设有数据库表student,表中有字段studentCode,它是字符型的,现有需求:“每次向student表插⼊数据时,⾃动⽣成studentCode字段的值”
如果你的实现思路是这样的:
if(student表为空){
待插⼊数据studentCode字段的值设置为1;
}else{
查询出表中studentCode字段的最⼤值max;
待插⼊数据studentCode字段的值设置为max+1;
}
将数据插⼊student表;
你可能使⽤以下SQL语句查询studentCode字段的最⼤值:
SELECT MAX(studentCode) FROM `student`
测试⼀下程序,试着插⼊⼏条数据:
1插⼊第1条数据:studentCode ==1
2插⼊第2条数据:studentCode ==2
3插⼊第3条数据:studentCode ==3
4插⼊第4条数据:studentCode ==4
5插⼊第5条数据:studentCode ==5
6插⼊第6条数据:studentCode ==6
7插⼊第7条数据:studentCode ==7
8插⼊第8条数据:studentCode ==8
9插⼊第9条数据:studentCode ==9
10插⼊第10条数据:studentCode ==10
11插⼊第11条数据:studentCode ==10
12插⼊第12条数据:studentCode ==10
13插⼊第13条数据:studentCode ==10
最开始插⼊前10条数据studentCode字段的值还是正常的,可是从第11条数据开始,为什么studentCode字段的值全不变了呢?
原因就是studentCode字段是字符型的,从指定第11条数据的插⼊操作开始,SELECT MAX(studentCode) FROM `student`的结果将永远是9,所以就导致了最终设置的studentCode的值永远是10.
解决办法:类型转换
1SELECT MAX(CONVERT(studentCode,INT)) FROM `student`。