数据库排序问题--解决立即给分!!

wangrui821 2003-08-27 04:26:20
表 T_Class 中 ClassID 的字段值如下:
2.4.1.1
2.4.1.2
2.4.1.10
2.4.1.11
2.4.1.12

如果用 SELECT * FROM T_Class ORDER BY ClassID 进行查询,则取出值的排列顺序为
2.4.1.1
2.4.1.10
2.4.1.11
2.4.1.12
2.4.1.2

如何使其取出后按照每一位由小到大的顺序排列?
...全文
40 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangrui821 2003-08-27
  • 打赏
  • 举报
回复
多谢两位!!! :)
enhydraboy 2003-08-27
  • 打赏
  • 举报
回复
做一个函数,把classid按一定的算法运算成一个数字,然后按函数的结果排序。
CrazyFor 2003-08-27
  • 打赏
  • 举报
回复
参考:
1,建自定义函数。

CREATE function FN_GetOrderStr(@InputStr Nvarchar(100))
returns Nvarchar(4000)
as
begin
declare @str Nvarchar(4000),@TempId Nvarchar(100),@tempIn Nvarchar(4000)
set @InputStr='.'+@InputStr+'.'
set @tempIn=@InputStr

set @str=N''

while charindex('.',@InputStr,2)>0
begin
set @TempId=substring (@InputStr,2,charindex('.',@InputStr,2)-2)
set @str=@str+right('0000000000'+@TempId,10)
set @InputStr=replace(@InputStr,'.'+@TempId+'.','.')
end
if @str=''
set @str=right('0000000000'+@tempIn,10)

return @str
end

2,select * from table order by dbo.FN_GetOrderStr(字段名)

示例:

select dbo.FN_GetOrderStr('123.2.3.4.10.56')

----结果
000000012300000000020000000003000000000400000000100000000056

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧