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