一个小问题,不过很剌手!!!

lsxaa 2003-08-22 08:49:55
有一个表 要求按字段1 进行排序显示,字段1 的数据类型是字符型,字段1的数据形式如下:
1 Q1.1
2 Q2.1.3
3 Q1.1.1
4 Q1.1.2
5 Q2.1

要求列出来之后形式如下
1 Q1.1
3 Q1.1.1
4 Q1.1.2
2 Q2.1.3
5 Q2.1
既每个子问题排在对应的父问题的下面,这样的sql怎么写,数据库环境是access?

单纯的order by Q字段会出现这样的问题,如 Q1.1和Q11.1就无法比较了?
...全文
47 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsxaa 2003-08-22
  • 打赏
  • 举报
回复
数据库是access 不支持这些函数和存储过程吧?
CrazyFor 2003-08-22
  • 打赏
  • 举报
回复
参考:

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
honsire 2003-08-22
  • 打赏
  • 举报
回复
没用过access !
不过只要支持sql的order by就能得到你要的东西。
论坛帖子或导航菜单的树型结构是不是可以满足你的要求?

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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