SQL MAX()函數處理字符型字段


  假設有數據庫表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.

  解決辦法:類型轉換

1 SELECT MAX(CONVERT(studentCode,INT)) FROM `student`


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM