hur.cn - 华软网

 热门搜索

请问一个关于字符串排序的问题?急急急急急急急急急急急急

  作者:未知    来源:网络    更新时间:2018/1/1
表:a
字段1:bkdh(报刊代号)varchar(9)
报刊代号都是
1-1
1-2
21-2
31-4
11-5
这种样式类型

我需要这样排序
从小到大:按"-"前面的从小到大,然后再按"-"后面的从小到大(需要转换真整型)
从大到小:按"-"后面的从大到小,然后在按"-"前面的从小到大(需要转换真整型)

请问利用setsort方法代码怎么写呢?
------华软网友回答------
setsort当然不能。不过可以实现。
另外定义几个字段,存放-分割的数字,按照你的要求,分别对这几个排序,然后,把结果用一个计算域合起来就可以。
------华软网友回复------
你可真笨,这么简单的事都不会,没脑子
------华软网友回复------
以-为分隔线,分别取前后数据。

具体实现自已研究。
------华软网友回复------
加一计算列,-前面的位数不同则在前面添0,保存到计算列,再按计算列排序
------华软网友回复------
select * from TableName order by 
cast(substr(bkdh,1,locate(bkdh,'-') - 1) as integer),
cast(substr(bkdh,1,locate(bkdh,'-') + 1) as integer)

这样就搞定了
------华软网友回复------
上面错了一点,拷贝的:)

select * from TableName order by 
cast(substr(bkdh,1,locate(bkdh,'-') - 1) as integer),
cast(substr(bkdh,locate(bkdh,'-') + 1) as integer)

这样就搞定了

------华软网友回复------
按long(trim(left(bkdh,pos(bkdh,'-')-1)))*10000-long(trim(mid(bkdh,pos(bkdh,'-')+1)))升序排即可
------华软网友回复------
SETSORT怎么不能?当然可以了.SETSORT里写如下相关的代码,改改就是啦

long(trim(left(bkdh,pos(bkdh,'-')-1)))*10000-long(trim(mid(bkdh,pos(bkdh,'-')+1)))      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。