自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談SQL Server 2008中新增屬性Hierarchyid

數(shù)據(jù)庫 SQL Server 數(shù)據(jù)庫運(yùn)維
我們將簡(jiǎn)單談?wù)凷QL Server 2008中新增屬性Hierarchyid。Hierarchyid是SQL Server 2008的一個(gè)重要新增特性,主要解決的問題是擁有層次關(guān)系的表格。

例如我們?nèi)粘I钪杏玫阶疃嗟慕M織結(jié)構(gòu)圖。我們一般會(huì)用一個(gè)Employees表保存員工數(shù)據(jù),而每個(gè)員工則又可能會(huì)有相應(yīng)的上級(jí)。以前要得到某個(gè)員工的所有上級(jí),或者所有下級(jí),通常所采取的方法都是遞歸。SQL Server 2005開始支持的CTE從一定程序上方便了該工作的實(shí)現(xiàn)。

但SQL 2008的hierarchyid讓這個(gè)工作更加簡(jiǎn)化和直接。而該類型其實(shí)是一個(gè)CLR自定義數(shù)據(jù)類型。

image

一般我們使用的時(shí)候,如下面的例子

--創(chuàng)建表
CREATE TABLE Employees
(
    Org_Id hierarchyid NOT NULL,
    EmployeeId INT NOT NULL,
    EmployeeName VARCHAR(50) NOT NULL,
    Title VARCHAR(50) NOT NULL
)
GO

--插入一些員工,注意第一個(gè)列的格式,必須用/開始和結(jié)束。這是一個(gè)路徑的符號(hào)。這是一個(gè)關(guān)鍵

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,'王五','IT Manager');
INSERT INTO dbo.Employees VALUES('/1/2/',10004,'趙六','Manager');
INSERT INTO dbo.Employees VALUES('/1/1/1/',10005,'洪七','Employee');

--查看所有的員工

SELECT * FROM dbo.Employees 

image


--查看所有的員工及其級(jí)別
SELECT *,Org_Id.GetLevel() AS Level FROM Employees

image

--查看陳希章的所有下屬

DECLARE @BOSS hierarchyid
SELECT @BOSS=Org_Id FROM Employees WHERE EmployeeID=10000
SELECT *,Org_Id.GetLevel()AS Level FROM Employees WHERE Org_Id.IsDescendantOf(@BOSS)=1

image

--查看趙六及其所有上級(jí)
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

image

與hierarchyid有關(guān)的一些函數(shù)主要有

◆GetAncestor :取得某一個(gè)級(jí)別的祖先

◆GetDescendant :取得某一個(gè)級(jí)別的子代

◆GetLevel :取得級(jí)別

◆GetRoot :取得根

◆IsDescendantOf :判斷某個(gè)節(jié)點(diǎn)是否為某個(gè)節(jié)點(diǎn)的子代

◆Parse :將字符串轉(zhuǎn)換為hierarchyid。該字符串的格式通常都是/1/這樣的

◆Read :Read 從傳入的 BinaryReader 讀取 SqlHierarchyId 的二進(jìn)制表示形式,并將 SqlHierarchyId 對(duì)象設(shè)置為該值。不能使用 Transact-SQL 調(diào)用 Read。請(qǐng)改為使用 CAST 或 CONVERT。

◆GetReparentedValue :可以用來移動(dòng)節(jié)點(diǎn)(或者子樹)

◆ToString :將hierarchyid轉(zhuǎn)換為字符串,與parse正好相反

◆Write WriteSqlHierarchyId 的二進(jìn)制表示形式寫出到傳入的 BinaryWriter 中。無法通過使用 Transact-SQL 來調(diào)用 Write。請(qǐng)改為使用 CAST 或 CONVERT。

【編輯推薦】

  1. 詳解如何刪除SQL Server表中的重復(fù)行
  2. SQL Server快速獲取表的記錄總數(shù)
  3. SQL Server 2008的全面分析擴(kuò)展解決方案
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2010-06-03 17:22:27

2009-06-22 10:22:57

SQL Server

2012-04-16 09:55:38

SQL Server

2011-08-19 14:26:42

SQL Server 分層數(shù)據(jù)類型

2010-09-13 09:45:17

sql server2

2010-07-19 13:22:45

SQL Server

2010-06-03 11:39:33

2009-04-16 17:44:31

2009-04-16 18:15:19

動(dòng)作審核審核活動(dòng)SQL Server

2010-09-13 09:58:17

SQL Server2

2012-04-13 13:26:30

SQL Server

2009-04-16 17:03:12

報(bào)表開發(fā)工具報(bào)表制作SQL Server

2013-03-13 09:53:50

SQL Server

2010-03-26 09:46:32

SQL Server

2010-02-04 09:17:26

Visual Stud

2009-06-12 11:27:25

2011-03-24 10:19:58

SQL Server2CPU性能監(jiān)控

2009-04-16 17:11:39

管理報(bào)表配置報(bào)表SQL Server

2011-08-19 10:13:34

SQL Server Values新用途

2011-08-19 10:24:46

SQL Server Top新用途
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)