dee*_*ule 11 t-sql sql-server hierarchyid sql-server-2008
我是SQL Server 2008的新手,刚刚介绍了HierarchyId.
我正在学习SQL Server 2008 - HIERARCHYID - 第一部分.所以基本上我是逐行跟踪文章,在SSMS中练习时,我发现对于每个ChildId,生成一些十六进制值,如0x,0x58,0x5AC0等.
我的问题是
Dan*_*llo 11
这些十六进制值只是层次结构级别的二进制表示.通常,您不应直接使用它们.
您可能想查看以下示例,我认为这应该是不言自明的.我希望它会让你朝着正确的方向前进.
创建一个包含hierarchyid字段的表:
CREATE TABLE groups (
group_name nvarchar(100) NOT NULL,
group_hierarchy hierarchyid NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
插入一些值:
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/'));
Run Code Online (Sandbox Code Playgroud)
查询表格:
SELECT
group_name,
group_hierarchy.ToString()
FROM
groups
WHERE
(group_hierarchy.IsDescendantOf(hierarchyid::Parse('/1/')) = 1);
Run Code Online (Sandbox Code Playgroud)
Ran*_*der -3
我会让其他人解决您的具体问题,但我会告诉您,在我看来,SQL Server 2008 中的 HierarchyId 并不是 Microsoft 对 SQL Server 的最大贡献之一。它们很复杂,而且有些尴尬。我想您会发现,对于许多分层需求,公用表表达式 (CTE) 效果很好。
兰迪
| 归档时间: |
|
| 查看次数: |
3896 次 |
| 最近记录: |