Я - новичок в SQL Server 2008 и просто был представлен HierarchyId.
Я узнаю из SQL Server о 2008 - HIERARCHYID - ПЕРВАЯ ЧАСТЬ. Так в основном я следую статье линию за линией и при осуществлении в SSMS, я нашел, что для каждого ChildId некоторые шестнадцатеричные значения сгенерированы как 0x, 0x58,0x5AC0 и т.д.
Мои вопросы
Эти шестнадцатеричные значения представляют собой просто двоичное представление уровня иерархии. В общем, вы не должны использовать их напрямую.
Вы можете проверить следующий пример, который, я думаю, не требует пояснений. Надеюсь, это поможет вам двигаться в правильном направлении.
Создайте таблицу с полем ierarchyid
:
CREATE TABLE groups (
group_name nvarchar(100) NOT NULL,
group_hierarchy hierarchyid NOT NULL
);
Вставьте некоторые значения:
INSERT INTO groups (group_name, group_hierarchy)
VALUES
('root', hierarchyid::Parse('/')),
('domain-a', hierarchyid::Parse('/1/')),
('domain-b', hierarchyid::Parse('/2/')),
('sub-a-1', hierarchyid::Parse('/1/1/')),
('sub-a-2', hierarchyid::Parse('/1/2/'));
Запросите таблицу:
SELECT
group_name,
group_hierarchy.ToString()
FROM
groups
WHERE
(group_hierarchy.IsDescendantOf(hierarchyid::Parse('/1/')) = 1);
Я позволю другим ответить на ваши конкретные вопросы, но скажу вам, что IMO, HierarchyId в SQL Server 2008 не является одним из самых больших вкладов компании Microsoft в SQL Server. Они сложны и несколько неудобны. Думаю, вы обнаружите, что для многих иерархических нужд общие табличные выражения (CTE) отлично работают.
Randy
.