我正在尝试从自引用表中生成一个类似于 Cat1/Cat2/Cat3 等的字符串。
数据如下所示:
类别表
类别 ID、[名称]、父 ID
1,根,0
2、1 类、1 类
3、2 类、2 类
4、3 类、3 类
5、4 类、1 类
六类、五类、五类
我想屈服:
根/Cat1/Cat2/Cat3 根/Cat4/Cat5
我如何在 sql server 中执行此操作?
我正在尝试从自引用表中生成一个类似于 Cat1/Cat2/Cat3 等的字符串。
数据如下所示:
类别表
类别 ID、[名称]、父 ID
1,根,0
2、1 类、1 类
3、2 类、2 类
4、3 类、3 类
5、4 类、1 类
六类、五类、五类
我想屈服:
根/Cat1/Cat2/Cat3 根/Cat4/Cat5
我如何在 sql server 中执行此操作?
您可以使用 CTE
WITH cte AS (
SELECT CategoryID,CAST(Name AS VARCHAR(4000)) AS Name
FROM Category
WHERE ParentID = 0
UNION ALL
SELECT c.CategoryID, CAST(e.Name + '/' + c.Name AS VARCHAR(4000))
FROM cte e
INNER JOIN Category c
ON c.ParentID = e.CategoryID
)
SELECT c1.Name
FrOM cte c1
WHERE NOT EXISTS (SELECT 1 FROM cte c2 where c1.name <> c2.name AND c2.name like c1.NAME + '%')
尝试这个 :
DECLARE @str VARCHAR(255) --Or whatever length you need
SET @str = ''
SELECT @str = @str + [Name] + '/' FROM CategoryTable
SET @str = SUBSTRING(@str,0,LEN(@str)) -- remove the trailing '/'
PRINT @str