Некоторые вопросы о HierarchyId (SQL Server 2008)

Я - новичок в SQL Server 2008 и просто был представлен HierarchyId.

Я узнаю из SQL Server о 2008 - HIERARCHYID - ПЕРВАЯ ЧАСТЬ. Так в основном я следую статье линию за линией и при осуществлении в SSMS, я нашел, что для каждого ChildId некоторые шестнадцатеричные значения сгенерированы как 0x, 0x58,0x5AC0 и т.д.

Мои вопросы

  1. Каковы эти шестнадцатеричные значения?
  2. Почему они сгенерированы и каково их использование? Я имею в виду, где я могу использовать те значения hexa?
  3. Мы имеем какой-либо контроль над теми значениями hexa? Я имею в виду, может мы обновлять и т.д.
  4. Как определить иерархию путем изучения тех значений hexa.. Я имею в виду, как я могу определить, который является родителем и который является ребенком?

11
задан BЈовић 23 December 2011 в 14:10
поделиться

2 ответа

Эти шестнадцатеричные значения представляют собой просто двоичное представление уровня иерархии. В общем, вы не должны использовать их напрямую.

Вы можете проверить следующий пример, который, я думаю, не требует пояснений. Надеюсь, это поможет вам двигаться в правильном направлении.

Создайте таблицу с полем 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);
11
ответ дан 3 December 2019 в 10:44
поделиться

Я позволю другим ответить на ваши конкретные вопросы, но скажу вам, что IMO, HierarchyId в SQL Server 2008 не является одним из самых больших вкладов компании Microsoft в SQL Server. Они сложны и несколько неудобны. Думаю, вы обнаружите, что для многих иерархических нужд общие табличные выражения (CTE) отлично работают.

Randy

.
-3
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: