有这样一个分层数据结构:
1 Проект
2 Этап
3 Документация
4 Чертёж
这里数字表示(相对而言)hierarchyid字段,name表示表中的name字段。MS SQL 定义了 ToString() 方法,例如,它允许您获取最后一个元素(以下内容:
4.ToString()
/1/2/3/4/
但是这个选项不适合我,我想得到以下结果:
/Проект/Этап/Документация/Чертёж/
你能告诉我如何获得这样的完整路径吗?
让有数据
和一个包含感兴趣节点路径的变量
然后在 SqlServer 2017(及更高版本)中,您可以像这样连接节点名称:
对于早期版本,如下所示:
如果有超过四个级别,则
(VALUES (0), (1), (2), (3)) l(level)必须添加常量。如果事先不知道级别数,则可以使用数字生成函数代替一组数字,例如Itzik Ben-Gan 的 GetNumsRange(此处)。您还需要一个用于节点深度的附加变量
分别在请求中而不是
将需要被替换