存放的字段是varchar类型,里面是数字,现在到099,下一个就0100,然后再查最大的时候,还是查到099最大,怎么让查到0100才是最大?

解决方案 »

  1.   

    如果都是数字的话  那就cast(字段 as  int)字符串的话他是比较第一位第一位相同比较第二位
      

  2.   

    select max(字段*1) from tb
      

  3.   

    你这种情况,varchar类型是不能直接比较的,必须转换成int型。比如 cast(字段 as int) \convert(int 字段) 字段*1 都是转换类型,再进行比较
      

  4.   


    cast(字段 as 数据类型)或者convert(数据类型,字段)
    字段是需要转换的字符
    数据类型是转换后的类型
      

  5.   

    字符串的比较原理首先要搞清楚,先比较第一个字母的ascii,如果相同,再比较第二个字母的Ascii。很明显099与0100,第二个字母9 的ascii是39H,而1的ascii是31H,那么自然是099大。
    要比较的花,建议转换为数值类型的
      

  6.   

    select max(convert(int,'099'))把'099' 替换成你想要比较的字段即可
      

  7.   

    楼主可以用两个字段,数据类型都是int,第一个字段只放0,第二个字段自增,显示的时候两个字段结合起来,转换成varchar类型即可。这样排序的时候不用转换类型,直接使用第二个字段,更有效率。
      

  8.   

    CAST 转换成int  再比较就可以了