在一个数据表中,编号字段由一些参数组合而自动生成,其中最后几位数字是流水号,每增加一个记录,编号的最后几位以按顺序自动增加,现在需要在数据表中按照流水号进行排序,如何操作?我曾想过,把编号中的后几位数字取出,放进一个计算字段中,可计算字段不能直接排序,我该怎么办?

解决方案 »

  1.   

    adoquery1.sql.clear;
    adoquery1.sql.add('select * from table1 order by md_number');
    adoquery1.open;
      

  2.   

    不太明白,能不能详细点?
    md_number是什么?
      

  3.   

    adoquery1.sql.clear;
    adoquery1.sql.add('select * from table1 order by 编号');
    adoquery1.open;
      

  4.   

    order by 就是按**排序
      

  5.   

    哦,上面的两位朋友可能是误会了我的意思了。我的意思是不是直接按照“编号”排序,而是按照编号中的末尾的部分流水号排序,如编号为:
    0113265050001
    0198635450002
    0145632750003
    1569845250004
    9638456650005
    我现在只想按照末尾的流水号即5001、5002、5003、5004、5005来进行排序,我曾经做了一个计算字段,使用copy函数把编号中的最后5位截取出来,放在一个单独的计算字段中,但使用sql语句不能对计算字段排序,到底应该怎么做,请朋友们赐招。
      

  6.   

    sql 语句可以对计算字段排序,你可能疏忽某些地方了
      

  7.   

    select *,substring(id,8,5)as new_id from mytable order by new_id desc
    其中id 为你要的总编号,new_id为辅助编号,把数字变化一下就解决了
      

  8.   

    不妨试试
    Select * from table order by substr([编号], 9, 5)
    具体我也没试过,具体函数你查一下手册,只是提供一点思考方向。
      

  9.   

    to  hbgywangxin(wangxin) :计算字段应该如何排序?我查了以前的这方面的贴子,都没有说清楚。
    另外,substr或者是substring到底是哪儿的函数,我在delphi和sql的帮助中都没有找到有关这两个函数的介绍。直接按照 flygq(qq)和 yycec() 的方法都不行,系统提示substring或者是substr这一部分有错。。
      

  10.   

    substr或者substring到底是哪里的函数?
      

  11.   

    终于找到了这个该死的substring,它在Database Desktop的help中可以找到:
    substringSUBSTRING() takes a string and creates a substring of that string.SELECT SUBSTRING( CUSTNAME FROM 1 FOR 10 ) FROM CUSTOMERThis query return the first 10 characters of the CUSTNAME column.
    You could also use the SUBSTRING expression SUBSTRING( CUSTNAME FROM 1), which starts returning characters at the specified number and continues to the end.
    我试过,这样用可以:
    select substring(bh from 9 for 5) as bh from zf.db order by bh asc.但问题是,这样做过后,整个dbgrid中就只有编号(bh)中的后一部分数字了,其它字段都没有显示出来了,这样虽然排好了序,但又有什么用呢?如果这样,select *,substring(bh from 9 for 5) as bh from zf.db order by bh asc,在执行时又报错。
    即使是把*换成现有的多个字段(如果字段比较多,这样就非常郁闷了),但编号字段只显示了后面的一部分数字,又有什么用呢?能不能动态在表中添加一个字段,然后把substring(bh from 9 for 5) as bh写成substring(bh from 9 for 5) as new_id order by new_id,同时设置new_id的显示属性为不可见?如果能,该如何动态添加?