专栏首页跟着阿笨一起玩NETSQL Server 2008中的hierarchyid

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。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C# Windows服务开发从入门到精通

    4.2、通过第三方组件 (Topshelf)创建C# Windows服务应用程序。

    跟着阿笨一起玩NET
  • Win8找不到无线信号怎么办

      开启无线上网需要三个层次的设置需要开启:物理开关,软件开关和无线服务。只有开关都打开无线指示灯才会亮。当指示灯亮但是仍然无法搜索到无线网络信号的时候,要检查...

    跟着阿笨一起玩NET
  • Visual Studio报错/plugin.vs.js,行:1074,错误:缺少标识符、字符串或数字

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Priva...

    跟着阿笨一起玩NET
  • Truncated incorrect DOUBLE value: 'd'的解决方法(jdbc)

    今天写jdbc中dao的增删改查时遇到了一个问题,花费了好长时间,不过还好,有我峰哥出头,问题解决了,在这做个分享,对峰哥表达一下感激之情

    泰斗贤若如
  • Python 切片(Slice)

    在实际开发中,经常遇到下面的需求:在线性表(数组)中提取若干个元素的操作,提取规则有很多,比如说提取前5个、提取后5个、提取奇数/偶数位元素等等。 ...

    Steve Wang
  • 什么是网络功能虚拟化(NFV)

    当涉及到网络设备,我们发现传统的专有网络设备越来越多样化,这使得运营商和数据中心运营商们升级服务也越来越困难。网络功能虚拟化(NFV)是源于ETSI行业规范工作...

    SDNLAB
  • CSAPP---系统级IO

    IO就是输入输出,这个输入输出的对象是针对主存来说的,往主存上复制数据就是输入,从主存上往外部设备上复制就是输出。这些外部设备包括磁盘驱动器,终端和网络等。对于...

    HeaiKun
  • 来傲游浏览器工作

    帮公司发布一下一些职位的招聘,未来的小伙伴赶紧投递简历哈。投递给我,会有更大的面试特权哈。发送简历给我 andrewallanwallace#gmail.com...

    技术小黑屋
  • 修改 IIS 上传大小的限制方法

    Savalone
  • 论NFV的六大用例

    虚拟化正在改变整个IT领域。简而言之,它允许将物理对象转换为其逻辑“虚拟”对象。IT资源虚拟化可以减少运营和资本支出,最大程度地减少停机时间,可以更快地进行配置...

    SDNLAB

扫码关注云+社区

领取腾讯云代金券