知识大全 SQL Server 2008 中的hierarchyid类型应用

Posted 员工

篇首语:如果每个人都理解你,那你得普通成什么样!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL Server 2008 中的hierarchyid类型应用相关的知识,希望对你有一定的参考价值。

SQL Server 2008 中的hierarchyid类型应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  SQL Server 的一个重要新增特性 主要解决的问题是拥有层次关系的表格 例如我们日常生活中用到最多的组织结构图 我们一般会用一个Employees表保存员工数据 而每个员工则又可能会有相应的上级 以前要得到某个员工的所有上级 或者所有下级 通常所采取的方法都是递归 SQL Server 开始支持的CTE从一定程序上方便了该工作的实现

  但SQL 的hierarchyid让这个工作更加简化和直接 而该类型其实是一个CLR自定义数据类型

>

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

   创建表

  CREATE TABLE Employees

  (

  Org_Id hierarchyid NOT NULL

  EmployeeId INT NOT NULL

  EmployeeName VARCHAR( ) NOT NULL

  Title VARCHAR( ) NOT NULL

  )

  GO

   插入一些员工 注意第一个列的格式 必须用/开始和结束 这是一个路径的符号 这是一个关键

  INSERT INTO dbo Employees VALUES( / 陈希章 CEO );

  INSERT INTO dbo Employees VALUES( / / 张三 CTO );

  INSERT INTO dbo Employees VALUES( / / 李四 CFO );

  INSERT INTO dbo Employees VALUES( / / / 王五 IT Manager );

  INSERT INTO dbo Employees VALUES( / / / 赵六 Manager );

  INSERT INTO dbo Employees VALUES( / / / / 洪七 Employee );

   查看所有的员工

  SELECT * FROM dbo Employees

>

   查看所有的员工及其级别

  SELECT * Org_Id GetLevel() AS Level FROM Employees

>

   查看陈希章的所有下属

  DECLARE @BOSS hierarchyid

  SELECT @BOSS=Org_Id FROM Employees WHERE EmployeeID=

  SELECT * Org_Id GetLevel()AS Level FROM Employees WHERE Org_Id IsDescendantOf(@BOSS)=

>

   查看赵六及其所有上级

  DECLARE @Employee hierarchyid

  SELECT @Employee=Org_Id FROM Employees WHERE EmployeeID=

  SELECT * Org_Id GetLevel()AS Level FROM Employees WHERE @Employee IsDescendantOf(Org_Id)=

>

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

  GetAncestor 取得某一个级别的祖先

  GetDescendant 取得某一个级别的子代

  GetLevel 取得级别

  GetRoot 取得根

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

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

  Read

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

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

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

  Write

cha138/Article/program/SQLServer/201311/22307

相关参考

知识大全 安装sql server 2008 management提示已安装 SQL Server 2005

安装sqlserver2008management提示已安装SQLServer2005  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布

知识大全 清理SQL Server 2008日志文件

清理SQLServer2008日志文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL日志

知识大全 SQL Server 2008 化茧成蝶

SQLServer2008化茧成蝶  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于微软的SQ

知识大全 解决sql server 2008 不允许保存更改

  >cha138/Article/program/SQLServer/201311/22306

知识大全 sql server 2008亿万数据性能优化

  根据设计惯例查询的时候主子表通过关键词字段关联查询查询语句如下  selecttopawordaqueryurlairankatitleabaiduurlaitrafficaitrafficbib

知识大全 Microsoft SQL Server 2008系统目录

MicrosoftSQLServer2008系统目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 完美卸载SQL Server 2008的方法

完美卸载SQLServer2008的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!控制面板&n

知识大全 SQL Server 2008的升级与部署

答疑:SQLServer2008的升级与部署  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Q现

知识大全 浅析SQL Server 2008企业级新特性

浅析SQLServer2008企业级新特性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL

知识大全 SQL Server 2008空间数据初探[2]

数据库工程师:SQLServer2008空间数据初探[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一