我的表table1有一个字段Mei_Icon,有以下数据Mei_Icon
1_unselect.gif
2_unselect.gif
8_unselect.gif
10_unselect.gif我应该怎样写SQL语句,取出这个字段数值最大的数据,现在最大是10_unselect.gif

解决方案 »

  1.   

    SELECT MAX(Mei_Icon) FROM TABLE1
      

  2.   

    楼上的不行..取出的只是8_unselect.gif
      

  3.   

    select max(Mei_Icon)
    from TABLE1
    where len(Mei_Icon)  = (
    select Max(Len(Mei_Icon)) from TABLE1)
    建议别这样命名。比方说前面固定长度,或者另外加一个字段
    ---------------------------------------
    http://blog.sina.com.cn/u/1060040984
      

  4.   

    试一下下边这个select max(left(Mei_Icon,len(Mei_Icon)-13)) from Table1
      

  5.   

    select max(cast(left(Mei_Icon,charindex(Mei_Icon,'_')-1) as int))  from table1
      

  6.   

    如果_unselect.gif是固定的就用Xpengfee的方法了
      

  7.   

    select max(Mei_Icon)
    from TABLE1
    where len(Mei_Icon)  = (
    select Max(Len(Mei_Icon)) from TABLE1)这个符合我要的结果了.但是我觉得select max(left(Mei_Icon,len(Mei_Icon)-13)) from Table1 这个也可以.但是结果却是得出8.谁能解答一下呢
      

  8.   

    哦...如果字段都是varchar的话..按它排序只能按第一个数字排序开始的.
      

  9.   

    select max(to_number(substr(Mei_Icon,0,instr(Mei_Icon,0,"_")))) from table1 
    用这个试一下,这个是ORACLE下的不知道SQLSERVER下是否有to_number
      

  10.   

    venric() :字符串排序是按照ASCII码大小来排的0----9所以8排在1前面。
      

  11.   

    select Mei_Icon
    from tb
    where left(Mei_Icon, charindex('_',Mei_Icon) - 1) =
          (select max(cast(left(Mei_Icon, charindex('_',Mei_Icon)-1) as int)) as m from tb))
      

  12.   

    上后最后多了一个)
    select Mei_Icon
    from tb
    where left(Mei_Icon, charindex('_',Mei_Icon) - 1) =
          (select max(cast(left(Mei_Icon, charindex('_',Mei_Icon)-1) as int)) as m from tb)
      

  13.   

    SELECT MAX(val(Mei_Icon)) FROM TABLE1
      

  14.   

    select max(to_number(substr(Mei_Icon,0,instr(Mei_Icon,0,"_")))) from table1 
    用这个试一下,这个是ORACLE下的不知道SQLSERVER下是否有to_number没见过sqlserver 有to_number,有cast,convert
    转换成数字再比较
    干脆分成2个字段不是更好?
      

  15.   

    对罗大佑的做法进行补充select Max(Mei_Icon) from table1
    where  len(left(Mei_Icon,charindex('_',Mei_Icon) - 1)) =
    (select Max(len(left(Mei_Icon,charindex('_',Mei_Icon) - 1)))  from table1)可适用于任何以"_"作分割符的,前面为数据字的名称取得最大值的方法.
    结贴给分吧.