select substring(尺寸,len(尺寸),1) as ddk from input order by ddk
注:本方法只对*后面的数字是一位的情况有效.如果*后面的数字不止一位,需要另选方法.

解决方案 »

  1.   

    先写个函数提取a*b里的a,b到两个real类型里。然后再排序吧。
    function AbtractAB(s:string;var a,b:integer);
    var
      len,Star:integer;
      TmpA,TmpB:string;
    begin
      len:=length(s);
      Star:=pos(s,'*');
      TmpA:=copy(s,0,star);
      TmpB:=copy(s,star+1,len-Star-1);////////可能有些不精确,自已调一下。
      a:=StrToInt(TmpA);
      b:=StrToInt(TmpB);
    end;select * from table1 order by a order by b
      

  2.   

    oracle:
    select substr('123456*123',instr('123456*123','*')+1) from dual;
      

  3.   

    select substr(尺寸,ChrIndex('*',尺寸),datalength(尺寸)) as 高度
    from yourtable order by 高度
      

  4.   

    最好的办法是改一下表结构,改为两个字段,这样写SQL语句时就不用依赖于DBMS,结构也更合理.