节点MSSQL实现取出树状节点的算法(mssql 取 树)

对话框MSSQL实现取出树状节点的算法

在节点MSSQL中,经常会遇到需要提取的树状节点的情况,其实实现取出树状节点的算法非常简单。

算法的思路是,首先在表中创建ParentId的字段,然后定义某个节点的Id,作为参数,然后递归调用函数,取出树状节点的Id列表。

实现取出树状节点的算法主要分为三个步骤:

1、首先创建表,子节点和父节点关系如下:

CREATE TABLE [dbo].[Test] (

Id INT NOT NULL,

Name VARCHAR(50) NULL,

ParentId INT NULL

)

2、定义一个函数:

CREATE FUNCTION dbo.GetNodeIds

(

@ParentId INT,

@NodeIds NVARCHAR(MAX)

)

RETURNS NVARCHAR(MAX)

AS

BEGIN

SET @NodeIds = @NodeIds + CAST( @ParentId as varchar ) + ‘,’

DECLARE @NewParentId INT = @ParentId

WHILE @NewParentId IS NOT NULL

BEGIN

SELECT @NewParentId = ParentId

FROM Test

WHERE Id = @NewParentId

IF @NewParentId IS NOT NULL

SET @NodeIds = @NodeIds + CAST( @NewParentId as varchar ) + ‘,’

END

RETURN @NodeIds

END

3、调用函数,获取树状节点:

DECLARE @NodeIds NVARCHAR(MAX)

SET @NodeIds = ”

SELECT @NodeIds = CAST( dbo.GetNodeIds(@ParentId, @NodeIds) AS NVARCHAR(MAX) )

SELECT @NodeIds

这样,节点MSSQL实现取出树状节点的算法就搞定了,简单又灵活。


数据运维技术 » 节点MSSQL实现取出树状节点的算法(mssql 取 树)