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的平台对文件的排序也是如此,看看资源管理器就会发现)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值