请问在sql server中如何用sql语句组成无限菜单?

你说的是排序吧?我手头正好有一个例子。如果你稍微改变它,改变“.”to'-'是你想要的结果。

使用?tempdb?

如果?OBJECT_ID('TB ')?是吗?不是吗?空

下降?桌子?结核病(tuberculosis)

创造?桌子?结核病(tuberculosis)

(cBomList?NVARCHAR(200)?不是吗?空)

插入?变成?结核病(tuberculosis)

选择?'1'?工会?全部

选择?'1.1'?工会?全部

选择?'1.2'?工会?全部

选择?'1.11.11'?工会?全部

选择?'1.2.2'?工会?全部

选择?'2.1'?工会?全部

选择?'2.1.3'?工会?全部

选择?'2.2'?工会?全部

选择?'3.1'?工会?全部

选择?'3.12'?工会?全部

选择?'3.2'?

/*将排名转换为固定位数*/

如果?OBJECT_ID('formatBom ')?是吗?不是吗?空

下降?功能?格式化Bom

去吗?

创造?功能?【dbo】。[formatBom](@cBName?nvarchar(100))

退货?varchar(100)

如同

开始

申报?@str?varchar(100),@i?int,@tempV?nvarchar(100),@ iBIndex?int?,@iEIndex?int -?,@bG?少量

设置?@ I index = 1

设置?@str= ' '

设置?@i=1

如果?len(@ CB name)& gt;0

开始

设置?@tempV=@cBName

什么时候?(@ i & lt=len(@tempV))

开始

如果?子串(@tempV,@i,1)= ' '

开始

设置?@iEIndex=@i

设置?@ str = @ str+right(cast(substring(@ tempV,@ I index,@ iEIndex-@ I index)?作为?int)+100000,3)

设置?@ iBIndex?=?@我?+?1

结束

设置?@i=@i+1

结束

设置?@ str = @ str+right(cast(substring(@ tempV,@ iBIndex,Len(@tempV)?+?1?-?@iBIndex)?作为?int)+100000,3)

结束

返回(@str)

结束

选择?*,dbo。【format BOM】(cbom list)?从哪里?TB?订单?被谁?dbo。[格式清单]