通过目录名称及其上下层级关系自动生成文件夹路径的方法
- 2024-03-27
- 259 人已阅读
在数据表中有一个字段代表文件目录名称,各文件目录有父子层级关系,根据这种关系自动生成文件夹路径。
下表是数据表中目录层级关系的示例:
欲实现效果如下:
通过如下代码实现该需求:
--根据目录和上下层级关系,生成文件夹路径
WITH RecursiveCTE AS (
SELECT cCode, cName, cUpCode, CAST('' AS NVARCHAR(MAX)) AS dirPath
FROM B_FileClassList WHERE cUpCode is null
UNION ALL
SELECT f.cCode, f.cName, f.cUpCode, CAST(rc.dirPath + f.cName + '\' AS NVARCHAR(MAX))
FROM B_FileClassList f
INNER JOIN RecursiveCTE rc ON f.cUpCode = rc.cCode
)
UPDATE B_FileClassList SET dirPath = cte.dirPath FROM B_FileClassList
JOIN RecursiveCTE cte ON B_FileClassList.cCode = cte.cCode
--根据上面生成的文件夹路径,将路径字符串的最后一个'/'去掉
UPDATE B_FileClassList
SET dirPath=CASE WHEN CHARINDEX('\',REVERSE(dirPath))>0
THEN LEFT(dirPath,LEN(dirPath)-CHARINDEX('\',REVERSE(dirPath)))
ELSE dirPath END