ID列是一些大的数字:
20121010082由于数字太大,设为Int32不合适,
我设置的数据类型为字符串类型,那么,以ID列排序,是按照什么规则排序的呢?是按照数字的大小排序的吗?

解决方案 »

  1.   

    以你排序规则下字符的ASCII码排序的.
      

  2.   

    但是都是数字的这种规则你这么做没错.
    设为INT也是可以的.一般像这种还是字符
      

  3.   

    如果数值偏大,并且不能保证只有数值,那么用字符串会比较好。在表里面如何排序,最好是根据你最常用的查询来定。举个例子,日期,如果你最长查询的是降序查询,那么表的顺序用降序,可以减少seek和order by的开销。
      

  4.   

    是按照数字的大小排序的,不过性能会比数字的差些
    你这个可以用bigint
      

  5.   

    這樣可以保證按數字大小順序排Order by Len(ID),ID
      

  6.   


    你的数字有这么长么?
    declare @a b
    igint, @b int
    set @a = 1234567890123456789
    set @b = 1234567890
    select @a,@b
    /*                     
    -------------------- -----------
    1234567890123456789  1234567890(1 行受影响)*/
      

  7.   

    数字其实就是日期,但要导出为EXCEL,不可能设置为DateTime吧
      

  8.   

    另外建个字段放日期,然后这个ID字段最好INT类型,自增,然后创建聚集索引。
      

  9.   

    存储的是日期DATETIME或者SMALLDATETIME。但查询显示可以是你那样。
      

  10.   

    日期比较好的存放格式还是varchar
      

  11.   

    都是数字的这种规则你这么做没错.
    设为INT也是可以的.一般像这种还是字符
      

  12.   

    这个怎么会保证按数字大小排序呢?Len函数不是返回字符串的长度吗?
    121013056和121013057返回的长度一样啊
      

  13.   

    在排序时.转一下数据类型,将字符转为数字,select * from t order by cast(id as numeric(16,0))