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
*/







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章