如何在hierarchyid中更改子级和子级的父ID

时间:2011-05-04 14:31:17

标签: sql sql-server-2008 hierarchyid

id       hierid
---------------------
2   |    /2/
7   |    /2/7/
8   |    /2/8/
11  |    /2/7/11/
13  |    /2/8/13/
17  |    /2/8/17/
37  |    /2/8/37/

我想将其根更改为/ 3 /,这意味着我想要的输出是

id     hierid
---------------------
2   | /3/
7   | /3/7/
8   | /3/8/
11  | /3/7/11/
13  | /3/8/13/
17  | /3/8/17/
37  | /3/8/37/

像这样我怎样才能使用hierarchyid

2 个答案:

答案 0 :(得分:3)

UPDATE  mytable
SET     hierid = hierid.GetReparentedValue('/2/', '/3/')
WHERE   hierid.IsDescendantOf('/2/') = 1

答案 1 :(得分:2)

这个怎么样:

UPDATE tbl SET hierid = REPLACE(hierid, '/2/', '/3/');