起首可以必定的是,之所以會呈現題目中的問題必然不是因為系統錯誤,有經驗的人員知道這是數據類型的原因,具體我將和大師一路闡發一下:
第一步,建立測試表。起首在數據庫中新建一張測試表,字段包羅id(int、自增)、name(varchar),如下圖所示:
第二步,添加數據。編寫sql語句進行添加數據,如:“INSERT INTO `sqltest`.`test` (`name`) VALUES ('諸葛亮'),('孫權'),('劉備'),('周瑜'),('關羽'),('賈詡'),('張飛'),('魯肅'),('郭嘉'),('曹操'),('龐統'),('呂蒙'),('司馬懿'),('呂布'),('夏侯淵')”,如下圖所示:
第三步,int排序。編寫sql查詢,如“SELECT * FROM test ORDER BY id”,發現是正常排序沒有呈現如題所述環境,那就申明不是int類型數據問題,如下圖所示:
第四步,點竄本家兒鍵。我們將本家兒鍵id的數據類型點竄為“varchar”,如下圖所示:
第五步,varchar排序。依舊用步調三的查詢語句,發現呈現了如題所述環境,而呈現這種環境的原因是,sql在對varchar(char)類型排序時并不是按數值巨細排序,而是先對首位排序然后第二位、第三位……(以此類推下去),如下圖所示:
第六步,解決方案。sql查詢時將varchar類型轉換為數字進行排序,如:“SELECT * FROM test ORDER BY (id-0)”,如下圖所示:
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!