Эти шестнадцатеричные значения являются просто двоичным представлением уровня иерархии. В общем, вы не должны использовать их напрямую.
Вы можете проверить следующий пример, который, как мне кажется, должен быть понятен. Я надеюсь, что это приведет вас в правильном направлении.
Создать таблицу с полем hierarchyid
:
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);