SQL Server 2008中的hierarchyid

本人转载:http://www.cnblogs.com/chenxizhang/archive/2009/04/26/1444016.html

一般我们使用的时候,如下面的例子

--创建表
CREATE TABLE Employees
(
Org_Id hierarchyid NOT NULL,
EmployeeId INT NOT NULL,
EmployeeName VARCHAR(50) NOT NULL,
Title VARCHAR(50) NOT NULL
)
GO

--插入一些员工,注意第一个列的格式,必须用/开始和结束。这是一个路径的符号。这是一个关键
INSERT INTO dbo.Employees VALUES('/',10000,'陈希章','CEO');
INSERT INTO dbo.Employees VALUES('/1/',10001,'张三','CTO');
INSERT INTO dbo.Employees VALUES('/2/',10002,'李四','CFO');
INSERT INTO dbo.Employees VALUES('/1/1/',10003,'王五','ITManager');                              

INSERT INTO dbo.Employees VALUES('/1/2/',10004,'赵六','Manager');
INSERT INTO dbo.Employees VALUES('/1/1/1/',10005,'洪七','Employee');

--查看所有的员工
SELECT * FROM dbo.Employees

--查看所有的员工及其级别
SELECT *,Org_Id.GetLevel() AS Level FROM Employees

--查看陈希章的所有下属
DECLARE @BOSS hierarchyid
SELECT @BOSS=Org_Id FROM Employees WHERE EmployeeID=10000
SELECT *,Org_Id.GetLevel()AS Level FROM Employees WHEREOrg_Id.IsDescendantOf(@BOSS)=1

--查看赵六及其所有上级
DECLARE @Employee hierarchyid
SELECT @Employee=Org_Id FROM Employees WHERE EmployeeID=10004
SELECT *,Org_Id.GetLevel()AS Level FROM Employees WHERE@Employee.IsDescendantOf(Org_Id)=1

与hierarchyid有关的一些函数主要有

·        GetAncestor :取得某一个级别的祖先

·        GetDescendant :取得某一个级别的子代

·        GetLevel :取得级别

·        GetRoot :取得根

·        IsDescendantOf :判断某个节点是否为某个节点的子代

·        Parse :将字符串转换为hierarchyid。该字符串的格式通常都是/1/这样的

·        Read :

Read 从传入的 BinaryReader 读取
SqlHierarchyId
的二进制表示形式,并将SqlHierarchyId 对象设置为该值。不能使用 Transact-SQL 调用Read。请改为使用 CAST 或 CONVERT。

·        GetReparentedValue:可以用来移动节点(或者子树)

·        ToString :将hierarchyid转换为字符串,与parse正好相反

·        Write

WriteSqlHierarchyId 的二进制表示形式写出到传入的
BinaryWriter 中。无法通过使用 Transact-SQL 来调用 Write。请改为使用 CAST 或 CONVERT。

 

时间: 2024-09-22 21:24:11

SQL Server 2008中的hierarchyid的相关文章

SQL Server 2008 中的hierarchyid类型应用

SQL Server 2008的一个重要新增特性.主要解决的问题是拥有层次关系的表格.例如我们日常生活中用到最多的组织结构图.我们一般会用一个Employees表保存员工数据,而每个员工则又可能会有相应的上级.以前要得到某个员工的所有上级,或者所有下级,通常所采取的方法都是递归.SQL Server 2005开始支持的CTE从一定程序上方便了该工作的实现. 但SQL 2008的hierarchyid让这个工作更加简化和直接.而该类型其实是一个CLR自定义数据类型. 一般我们使用的时候,如下面的例

SQL Server 2008中的数据压缩功能

SQL Server 2005 SP2为我们带来了vardecimal功能,这项功能使得原来定长的decimal数据在数据文件中以可变长的格式存储,据称这项功能可以为典型的数据仓库节省30%的空间,而SQL Server 2008在这一基础上又进一步增强了数据压缩功能.SQL Server 2008现在支持行压缩和页面压缩两种选项,数据压缩选项可以在以下对象上启用: 未创建聚簇索引的表 创建聚簇索引的表 非聚簇索引(对表设置压缩选项不会影响到该表上的非聚簇索引,因此聚簇索引的压缩需要单独设置)

SQL Server 2008中多实例的评估和执行策略

问题提出 了解了SQL Server 2008中的管理策略之后,我们想在SQL Server 2008以及SQL Server 2005中的多实例上执行这些策略.请就如何实现给出详细的解答,谢谢. 专家解答 SQL Server 2008中,当一个实例被创建后,就可以对之进行评估.但数据库管理员需要做一项非常繁琐的工作:SQL Server中所管理的每一个实例都需要逐个执行这些策略.数据库管理员做的最多的工作应该是在产品正式运行前的测试环境中不断地改变执行的策略.然而很多人都并不想逐个逐个的导入

SQL Server 2008中不推荐及不支持的功能

每个人都在等着Microsoft SQL Server 2008的新功能出现,不过我们首先应该知道有哪些"不 推荐(deprecated)"以及"不支持(Discontinued)"的功能."不推荐"的 功能是指那些在旧版SQL Server中出现,但是将会在SQL Server的未来版本中不再推荐使用的功能,并且 在今后的版本中将会去除这些功能."不支持"的功能是指那些不会在SQL Server 2008中出 现的功能.在迁

SQL Server 2008中的联机事务处理

导言 在过去的20年数据库得到了普遍使用,并迅速发展.存储和技术成本的降低导致大量地存储数据和数据库的急剧扩大.由于这个简单有效的技术,内嵌的数据库和许多产品应运而生,并使得公司可以存储更多的数据,并保持更久的时间,所以公司想合并他们的服务器. SQL Server 2008专注于四个关键领域来满足现今的OLTP数据库需求: · 可扩展性和性能.SQL Server 2008使得公司可以建立具有现今的应用程序所要求的性能和扩展能力的数据库解决方案. · 高有效性.SQL Server 2008提

SQL Server 2008中有关XML的新功能

1 导言 Microsoft 在Microsoft SQL Server 2000中推出了与XML相关的功能以及Transact-SQL 关键字FOR XML和OPENXML ,这使得开发人员可以编写Transact-SQL代码来获取XML流形式的查询结果,并将一个XML 文档分割成一个rowset.SQL Server 2005显著的扩展了这些XML功能,推出了一个支持XSD schema验证. 基于XQuery的操作和XML索引的本地的xml 数据类型.SQL Server 2008建立在之

在SQL Server 2008中使用空间数据实现位置智能

1. 导言 现今的信息工作人员和消费者处理大量不同类型的信息,从电子表格和数据库中的商业数据的传统数 据表,到在线的基于媒体的数据例如视频.照片和音乐.近来朝向mash up解决方案(mash up解决方案是 指合并从多个来源获得的信息和内容来创建通用的在线应用程序)发展的趋势表明计算机用户使用高度集 成的解决方案来利用它们可用的大量信息. 同时,技术优势导致地理服务和设备的发展,包括在线绘制地图解决方案,例如Microsoft Virtual Earth,和较便宜的全球定位系统(GPS)解决方

PowerShell在SQL Server 2008中一些用法

PowerShell早在SQL Server 2005里就已经被集成了, 而我第一次用却在SQL Server 2008中.今天有 空总结几个实际例子出来.欢迎这方面专家来完善一下: 一.先不用SqlServerCmdletSnapin100这个SnapIn来写几个操作常用数据的脚本 1. 由于有读者问如何用PowerShell显示数据库中表,以下是一个简单函数供参考 #============================================== # SQL Server 200

SQL Server 2008中新的日期时间数据类型

SQL Server 2008 终于发布新版了,虽然还只是另一个社区测试版而非完全版.每当新软件发布,大 家最关系的问得最多的问题就是:有些什么新特性?SQL Server 2008有很多新功能和新工具.不过,本文 还是主要为大家介绍SQL Server 2008七月预览版引入的新数据类型,并对DATETIME数据类型的功能进行 专门讨论. SQL Server 2008中DATETIME功能的最大转变就是引入了四种DATETIME数据类型,分别为 DATE.TIME.DATETIMEOFFSE