SELECT * FROM ckd order by len(字段名)

解决方案 »

  1.   

    SELECT id FROM ckd order by left(rtrim(a.id)+'0000000000',10)这样难道不行吗?
      

  2.   

    order by len(我的字段), 我的字段
      

  3.   

    select * from 你的表 order by cast(substring(a,3,8000) as int)
      

  4.   

    全句是:SELECT a.rq, a.id, LEFT(a.id, 2) AS id1, RIGHT(a.id, LEN(a.id) - 2) AS id2
    FROM ckd a INNER JOIN
          ckmx b ON a.id = b.ckdid
    WHERE (a.rq >= '20030506')
    ORDER BY a.rq, LEFT(a.id, 2), CAST(RIGHT(a.id, LEN(a.id) - 2) AS int)
      

  5.   

    你应该直接用 RIGHT(id,len(id)-2)就对了,你没有给表起别名的。
      

  6.   

    再试试:
    SELECT id FROM ckd order by right('0000000000'+right(a.id,len(a.id)-2),10)这样只判断后面的数字,从小到大.
      

  7.   

    try:select * from ckd order by id desc
    不太懂楼主讲的意思,可能是这个吧!
      

  8.   

    pengdali(大力 V2.0) 
    的实现了
    SELECT *
    FROM ckd a INNER JOIN
          ckmx b ON a.id = b.ckdid
    WHERE (a.rq = '20030606')
    ORDER BY a.rq, LEFT(a.id, 2), CAST(SUBSTRING(a.id, 3, 8000) AS int)
      

  9.   

    恩,我也感觉你的是正确的.而且语法我也能明白.我会在看看的
    可能有些地方我弄错了谢谢大家帮忙 
    谢谢 icevi(按钮工厂) 问题解决.我结帖了!