SQL Server 2008R2 hierarchyid的使用方法(父子节点、上下级处理)

SQL Server 2008R2 hierarchyid的使用方法(父子节点、上下级处理)

SQL Server 2008 及以上版本,出了这样一个字段类型,用于处理父子节点、员工上下级等问题。使得此类问题变得更容易处理些。

直接上数据:

--创建表
CREATE TABLE tab
(
    Id hierarchyid NOT NULL,
    Name VARCHAR(10) NOT NULL
)
--插入测试数据
insert into tab
select '/','张三' union all
select '/1/','李四' union all
select '/2/','王五' union all
select '/1/1/','赵六' union all
select '/1/2/','何七' union all
select '/1/1/1/','蒋八' union all
select '/1/1/1/1/','王九'
--drop table tab

select *,Id.GetLevel()  as '级别' from tab

/*
Id            name    级别
0x            张三    0
0x58        李四    1
0x68        王五    1
0x5AC0        赵六    2
0x5B40        何七    2
0x5AD6        蒋八    3
0x5AD6B0    王九    4
*/
--查赵六及其下属
DECLARE @赵六 hierarchyid
SELECT @赵六=Id FROM tab WHERE name='赵六'
SELECT *,Id.GetLevel()AS '级别' FROM tab WHERE Id.IsDescendantOf(@赵六)=1
/*
Id            name    级别
0x5AC0        赵六    2
0x5AD6        蒋八    3
0x5AD6B0    王九    4
*/
--查赵六的上级
DECLARE @赵六 hierarchyid
SELECT @赵六=Id FROM tab WHERE name='赵六'
SELECT *,Id.GetLevel()AS '级别' FROM tab WHERE @赵六.IsDescendantOf(Id)=1
/*
Id            name    级别
0x            张三    0
0x58        李四    1
0x5AC0        赵六    2
*/







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值