表tb有一字段deid
其值是这样的
10-1
10-15
9-2
10-11
10-2
9-1
10-10如何用sql显示出结果是
9-1
9-2
10-1
10-2
10-10
10-11
10-15呢?
也就是以“-”前后进行排序?什么做

解决方案 »

  1.   

    SELECT deid FROM TB ORDER BY deid
      

  2.   

    直接使用SQL语句的Orader By就可以了!!!
      

  3.   

    order by cast (substring('01-01',1, charindex('-', '01-01') -1)  as int)
      

  4.   

    请参考:
    select * from tb order by left(deid,2),substring(deid,3,2)
      

  5.   

    只能把"-"前后,字符串的长度固定下来就可以
    select * from tb order by left(deid,2),substring(deid,3,2)

    select * from tb order by left(deid,1,2),substring(deid,3,2)
      

  6.   

    windindance(风舞轻扬) :能帮我解释你的语句吗?在你的语里没有deid这个了段中??我这样写不行
    select * from ade order by cast(left(deid,instr('-')) as int)直接使用order by 与固定长度也不行。因为这是未知的字符,但肯定只有一个'-'且前后是数字
      

  7.   

    order by cast (substring(deid,1, charindex('-', deid) -1)  as int)
      

  8.   

    串也可以比较大小呀。直接
    order by deid应该行的
      

  9.   

    SELECT  A  FROM B
    ORDER BY  CAST(REPLACE(A,'-','.') AS Numeric(7,2))
    这个才是正确的答案。其他人说的都不对!
      

  10.   

    windindance(风舞轻扬) 的例外!我没试过不知道!
      

  11.   

    我是这样写的:在access中:
    select * from ade order by cast (substring(deno,1,  charindex('-',  deno)  -1)  as  int) deid我改为deno了。
      

  12.   

    snake_eye(蛇眼) :出现同样的错误:
    我是这样写:
    SELECT *  FROM ade ORDER BY  CAST(REPLACE(deno,'-','.') AS Numeric(7,2))
      

  13.   

    你用的是什么的数据库系统呀???
    大家说的都是 MS SQL SERVER
      

  14.   

    select * from tb order by left(deid,2),substring(deid,3,2)应该OK
      

  15.   

    select * from ade order by mid(deno,1,instr(deno,'-')-1),cint(mid(deno,instr(deno,'-')+1,Len(deno)-Instr(deno,'-'))) 谢谢各位,我这样子搞定。