SQL的一個排序問題

朋友在建SQL表時遇到的,沒啥難度,不過有可能被忽視的小問題
  create table dd_test ( idint int,idname varchar(10))
  
  insert into dd_test select 611 ,'611'
  union select 612,'612'
  union select 6112,'6112'
  union select 70000 ,'70000'
  union select 6122 ,'6122'
  
  select * from dd_test
  order by idname
  int型的排序結果爲: 611,612,6112,6122,70000
  varchar型的排序結果爲:611,6112,612,6122,70000
  也就是說如果按varchar型排序的話是可以排的,但是其結果會發生誤差:
  這個誤差造成的原因是,在判斷字符串時會從左至右逐個字符判斷ASC值,根據此排序,所以6112就會排在612的前面,因爲第三位數6112比612小
  (在win32的平臺對文件的排序也是如此,看看資源管理器就會發現)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章