`
tianlihu
  • 浏览: 311349 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

sql中,把varchar类型转换成int型,在进行排序

阅读更多
原文链接

为了实现varchar型的字段序号递增,我每次插入数据要先找出数据库中序号最大的那个再加1,可是对  
varchar进行order   by   时,得不到正确结果,如   varchar里,‘100’<'99'  
怎么实现转化  
另外,我只比较varchar的后几位,那个怎么截取后几位再进行int转化再排序呢?  

回答1:
select   *   from   yourtable   order   by   cast(youcol   as   int)

回答2:
order   by   convert(int,   字段)

回答3:
但是你的列里面只能是数字组成的字符,要不然会出错

回答4:
create   table   #t(  
b   int   identity(1,1),  
a   varchar(3)  
)  
insert   into   #t   select   '003'  
insert   into   #t   select   '002'  
insert   into   #t   select   '001'  
insert   into   #t   select   '010'  
insert   into   #t   select   '023'  
--insert   into   #t   select   'a03'  
   
   
select   *   from   #t   order   by   cast(a   as   int)  
   
drop   table   #t

回答5:
declare   @maxid   numeric(8)  
   
select   @maxid=max(isnull(cast(right(字段,x)   as   numeric),0)+1)  
x表示从后面取多少位。 x表示从后面取多少位。 x表示从后面取多少位。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics