hierarchyid有关的一些函数】的更多相关文章

于hierarchyid有关的一些函数主要有:    GetAncestor :取得某一个级别的祖先    GetDescendant :取得某一个级别的子代    GetLevel :取得级别    GetRoot :取得根    IsDescendantOf :判断某个节点是否为某个节点的子代    Parse :将字符串转换为hierarchyid.该字符串的格式通常都是/1/这样的    Read :Read 从传入的BinaryReader 读取SqlHierarchyId 的二进制表…
这也是SQL Server 2008的一个重要新增特性.主要解决的问题是拥有层次关系的表格.例如我们日常生活中用到最多的组织结构图.我们一般会用一个Region表保存区域数据,而每个区域则又可能会有相应的上级.以前要得到某个区域的所有上级,或者所有下级,通常所采取的方法都是递归.SQL Server 2005开始支持的CTE从一定程序上方便了该工作的实现. 但SQL 2008的hierarchyid让这个工作更加简化和直接.而该类型其实是一个CLR自定义数据类型. create table Re…
以往我们在关系数据库中建立树状结构的时候,通常使用ID+ParentID来实现两条纪录间的父子关系.但这种方式只能标示其相对位置.解决这类问题在SqlServer2005出现之前通常是采用游标来操作,但熟悉数据库内部机制的人都知道使用游标带来的性能问题和其他问题是比较严重的. 到了SqlServer2005下,可以选择用CTE来做递归查询,这种方式查询比较简练,但由于数据库内部是采用递归查询的方式,其效率依旧不高:为了能够实现既简练又高效的查询,通常的做法是增加冗余字段,比如增加一个"Path&…
以往我们在关系数据库中建立树状结构的时候,通常使用ID+ParentID来实现两条 纪录间的父子关系.但这种方式只能标示其相对位置.解决这类问题在SqlServer2005出现之前通常是采用游标来操作,但熟悉数据库内部机制的人都 知道使用游标带来的性能问题和其他问题是比较严重的. 到了SqlServer2005下,可以选择用CTE来做递归查询,这种方式查询比 较简练,但由于数据库内部是采用递归查询的方式,其效率依旧不高:为了能够实现既简练又高效的查询,通常的做法是增加冗余字段,比如增加一个"Pa…
http://blog.csdn.net/tonyzhou2008/article/details/5100683 本文主要讲述三个内容: 1.如何创建hierarychyid的表,插入数据及基本递归查询. 2.介绍hierarchyid的10种专有函数. 3.介绍hierarchyid特有的深度优先索引(Depth-First Indexing)和广度优先索引(Breadth-First Indexing) 在上一节中 http://blog.csdn.net/tjvictor/archive…
1,传统的分层结构是父子结构,表结构中有一个ParentID字段自引用表的主键,表示“归属”关系,例如 create table dbo.emph ( ID int not null primary key, ParentID int foreign key references dbo.emph(id), Descr ) not null ) 示例数据是一个简单的HR职称结构,Boss,M表示的Mananger,L表示的是Leader,E表示的是Employee. 2,将父子结构转换为使用Hi…
HierarchyID 数据类型是一种长度可变的系统数据类型.可使用 HierarchyID 表示层次结构中的位置.类型为 HierarchyID 的列不会自动表示树,由应用程序来生成和分配 HierarchyID 值,使行与行之间的所需关系反映在这些值中. 1,字符串表示 必须以“/”开头,以“/”结尾,“/”之间使用数值标识某一个元素,一般是整数或小数,例如“/”,“/1/2/”,“/1/2/3/”,"/1/2/3.1" 2,数据类型的转换 ) declare @ha Hierar…
    ---------内置函数------------ select hierarchyid::GetRoot()--0x select hierarchyid::Parse('/1/1/') --0x5AC0 select cast(0x5AC0 as hierarchyid)--0x5AC0 select cast('/1/' as hierarchyid)--0x5AC0 select cast(0x5AC0 as hierarchyid).ToString()--/1/1/ sele…
树形层次结构(Hierarchy)经常出现在有结构的数据中,T-SQL新增数据类型HierarchyID, 其长度可变,用于存储层次结构中的路径.HierarchyID表示的层次结构是树形的,由应用程序来生成和分配 HierarchyID的值,建立父子节点之间的关系. HierarchyID数据类型支持深度优先顺序的比较,对于两个HierarchyID值 a和b,a<b意味着,在深度优先遍历时,先遍历到a,后遍历到b,也就是说,值越小,越接近根节点.对Hierarchy数据类型创建索引,是按照深…
1,传统的分层结构是父子结构,表结构中有一个ParentID字段自引用表的主键,表示“归属”关系,例如 create table dbo.emph ( ID int not null primary key, ParentID int foreign key references dbo.emph(id), Descr ) not null ) 示例数据是一个简单的HR职称结构,Boss,M表示的Mananger,L表示的是Leader,E表示的是Employee. 2,将父子结构转换为使用Hi…