节点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实现取出树状节点的算法就搞定了,简单又灵活。