SQL按照自动内容排序 20分,无满意结帖,结帖人chinaboykai]

发布时间:2014-1-1 0:09:46编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SQL按照自动内容排序 20分,无满意结帖,结帖人chinaboykai]",主要涉及到SQL按照自动内容排序 20分,无满意结帖,结帖人chinaboykai]方面的内容,对于SQL按照自动内容排序 20分,无满意结帖,结帖人chinaboykai]感兴趣的同学可以参考一下。

排序前 2 3 4 1 3/8 1/2 1/4 7/8 5/8 3/4 5/16 3/16 5/32 1-5/8 1-1/8 1-7/8 2-3/8 2-1/2 1-3/4 1-1/4 2-3/4 3-1/4 2-5/8 3-1/2 3-3/4 2-1/4 1-1/2 1-3/8 排序后: 5/32 3/16 1/4 . . . 1 1-1/8 1-1/4 1-3/8 . . . 2 2-1/4 2-3/8 . . . 3 3-1/4 3-1/2 3-3/4 4

把问题说清楚点,排序的规律是什么

--> 测试数据:[TB] if object_id('[TB]') is not null drop table [TB] GO create table [TB]([col] varchar(5)) insert [TB] select '2' union all select '3' union all select '4' union all select '1' union all select '3/8' union all select '1/2' union all select '1/4' union all select '7/8' union all select '5/8' union all select '3/4' union all select '5/16' union all select '3/16' union all select '5/32' union all select '1-5/8' union all select '1-1/8' union all select '1-7/8' union all select '2-3/8' union all select '2-1/2' union all select '1-3/4' union all select '1-1/4' union all select '2-3/4' union all select '3-1/4' union all select '2-5/8' union all select '3-1/2' union all select '3-3/4' union all select '2-1/4' union all select '1-1/2' union all select '1-3/8' DECLARE @sql VARCHAR(4000) SET @sql='' SELECT @[email protected]+'union all '+CHAR(10)+'select col='''+col+''',flag='+col+'.0 ' FROM TB t SET @sql='select col from ('+STUFF(@sql,1,9,'')+')g order by flag asc' PRINT @sql EXEC(@sql)

楼上排序结果: 0-7/8 0-3/4 0-5/8 0-1/2 0-3/8 0-5/16 0-1/4 0-3/16 0-5/32 1-7/8 1-3/4 1-5/8 1-1/2 1-3/8 1-1/4 1-1/8 1 2-3/4 2-5/8 2-1/2 2-3/8 2-1/4 2 3-3/4 3-1/2 3-1/4 3 4 我想要的是  0-7/8 0-3/4 0-5/8 0-1/2 0-3/8 0-5/16 0-1/4 0-3/16 0-5/32 1 1-7/8 1-3/4 1-5/8 1-1/2 1-3/8 1-1/4 1-1/8 2 2-3/4 2-5/8 2-1/2 2-3/8 2-1/4 3 3-3/4 3-1/2 3-1/4 4 每个字段 -后面的 /之间的相处结果 按从小到大排序 比如: 3-3/4 3-1/2 3-1/4 应该是 3-1/4 3-1/2 3-3/4

--> 测试数据:[TB] if object_id('[TB]') is not null drop table [TB] GO create table [TB]([col] varchar(6)) insert [TB] select '0-7/8' union all select '0-3/4' union all select '0-5/8' union all select '0-1/2' union all select '0-3/8' union all select '0-5/16' union all select '0-1/4' union all select '0-3/16' union all select '0-5/32' union all select '1-7/8' union all select '1-3/4' union all select '1-5/8' union all select '1-1/2' union all select '1-3/8' union all select '1-1/4' union all select '1-1/8' union all select '1' union all select '2-3/4' union all select '2-5/8' union all select '2-1/2' union all select '2-3/8' union all select '2-1/4' union all select '2' union all select '3-3/4' union all select '3-1/2' union all select '3-1/4' union all select '3' union all select '4' DECLARE @sql VARCHAR(4000) SET @sql='' SELECT @[email protected]+'union all '+CHAR(10)+'select col='''+col+''', orderflag='+ISNULL(PARSENAME(REPLACE(col,'-','.'),2),col)+',valueflag='+PARSENAME(REPLACE(col,'-','.'),1)+'.0 ' FROM TB t SET @sql='select col from ('+STUFF(@sql,1,9,'')+')g order by orderflag,valueflag desc' EXEC(@sql) /* col ------ 0-7/8 0-3/4 0-5/8 0-1/2 0-3/8 0-5/16 0-1/4 0-3/16 0-5/32 1 1-7/8 1-3/4 1-5/8 1-1/2 1-3/8 1-1/4 1-1/8 2 2-3/4 2-5/8 2-1/2 2-3/8 2-1/4 3 3-3/4 3-1/2 3-1/4 4 (28 行受影响) */ DROP TABLE TB

3-3/4 3-1/2 3-1/4  好像排序不对哦。。。


上一篇:SQL server 2000,怎么使用一个字符串来存储一个本地文件的地址,然后能够实现存入和取出。 40star274552340]
下一篇:SQL字符串字段内的字符排序 20chinaboykai]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款