我在数据库中有这样一列数据 
06zc00-1 
06zc00-2 
....... 
我想在datagrid中按照上面数据横线后的数字进行排序咋办? 
(默认的升序排序结果是1,10,11……19,2,21,22……。就是按照最先匹配的数据排出来的) 
求人指点哈

解决方案 »

  1.   

    先用split把后面的截取出来作为一列,然后对字符串用0补成完整的位数,01,02这种格式。
    然后排序。
      

  2.   

    在sql语句中先排好序,再绑定,排序字段比如是hao,排序部分如下,已经测试过,可以order by right(hao,len(hao)-PATINDEX('%-%',hao))
      

  3.   

    如果是数字的话可以转换为数字order by cast(right(name,len(name)-PATINDEX('%五%',name)) as int)
      

  4.   

    如果可以改数据的写入规则的话,在写入时写入zc00-001、zc00-002这样的,也就是在“-”后面补上0,使数字一样长,否则就要在取出时进行补零
      

  5.   

    我来帮他补充吧
    select * from 表名 order by right(字段名,len(字段名)-PATINDEX('%-%',字段名))
      

  6.   

    应该是select * from 表名 order by cast(right(字段名,len(字段名)-PATINDEX('%-%',字段名)) as int)
      

  7.   

    不知啥原因还是不行啊 (那一列是nvarchar类型)