您好,登錄后才能下訂單哦!
這篇文章給大家介紹SQL Server 2008中有哪些分層數據類型,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
SQLServer2008原生的分層數據類型有哪些
假如是在SQLServer2000中,我們需要讀取分層結構數據時,不得不借助遞歸。在SQLserver2005中,我們可以使用CTE,當然,好的數據結構設計可以避免你使用CTE,請看這里:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html。
假如你是一個數據庫設計新手,那么在sqlserver2008中可以使用新的原生分層結構數據hierarchyid。
關于它的詳細說明,請看MSDN:
http://msdn.microsoft.com/zh-cn/library/bb677173%28v=sql.100%29.aspx
http://64.4.11.252/zh-cn/library/bb677173.aspx
http://msdn.microsoft.com/en-us/magazine/cc794278.aspx#id0090037
需要注意的是,它可以改造傳統數據表而成。但不可以實現與XML互相轉換。
SQLServer2008原生的分層數據類型有哪些
下面我們看一個示例:
ifOBJECT_ID('[Category_hierarchyid]')isnotnulldroptable[Category_hierarchyid]go--創建表CREATETABLE[Category_hierarchyid](H_IDhierarchyidNOTNULL,C_IDINTprimarykeyidentity(1000,1)NOTNULL,C_NameNVARCHAR(50)NOTNULL,TitleNVARCHAR(50)NOTNULL)GOTRUNCATEtable[Category_hierarchyid]GOINSERTINTO[Category_hierarchyid]([H_ID],[C_Name],[Title])select'/','蔬菜','蔬菜'unionallselect'/1/','根菜類','蔬菜'unionallselect'/2/','葉菜類','蔬菜'unionallselect'/3/','茄果類','蔬菜'unionallselect'/4/','甘藍類','蔬菜'unionallselect'/1/1/','蘿卜','蔬菜'unionallselect'/1/1/','胡蘿卜','蔬菜'unionallselect'/4/2/','甘藍','蔬菜'unionallselect'/2/4/','花椰菜','蔬菜'unionallselect'/3/3/','茄子','蔬菜'unionallselect'/3/3/','番茄','蔬菜'unionALLselect'/1/1/5/','白蘿卜','蔬菜'go
SQLserver2008中的原生分層數據:hierarchyid
--查看所有的分類
SELECT*FROM[Category_hierarchyid]/*H_IDC_IDC_NameTitle0x1000蔬菜蔬菜0x581001根菜類蔬菜0x681002葉菜類蔬菜0x781003茄果類蔬菜0x841004甘藍類蔬菜0x5AC01005蘿卜蔬菜0x5AC01006胡蘿卜蔬菜0x85A01007甘藍蔬菜0x6C201008花椰菜蔬菜0x7BC01009茄子蔬菜0x7BC01010番茄蔬菜0x5AE31011白蘿卜蔬菜*/
--查看所有的分類及級別
SELECT*,H_ID.GetLevel()ASLevelFROM[Category_hierarchyid]/*H_IDC_IDC_NameTitleLevel0x1000蔬菜蔬菜00x581001根菜類蔬菜10x681002葉菜類蔬菜10x781003茄果類蔬菜10x841004甘藍類蔬菜10x5AC01005蘿卜蔬菜20x5AC01006胡蘿卜蔬菜20x85A01007甘藍蔬菜20x6C201008花椰菜蔬菜20x7BC01009茄子蔬菜20x7BC01010番茄蔬菜20x5AE31011白蘿卜蔬菜3*/
--查看根菜類及其子分類
DECLARE@ParenthierarchyidSELECT@Parent=H_IDFROM[Category_hierarchyid]WHEREC_ID=1001----PRINT@Parent.ToString()SELECT*,H_ID.GetLevel()ASLevelFROM[Category_hierarchyid]WHEREH_ID.IsDescendantOf(@Parent)=1/*H_IDC_IDC_NameTitleLevel0x581001根菜類蔬菜10x5AC01005蘿卜蔬菜20x5AC01006胡蘿卜蔬菜20x5AE31011白蘿卜蔬菜3*/
--查看胡蘿卜及其所有父分類
DECLARE@SonhierarchyidSELECT@Son=H_IDFROM[Category_hierarchyid]WHEREC_ID=1006SELECT*,H_ID.GetLevel()ASLevelFROM[Category_hierarchyid]WHERE@Son.IsDescendantOf(H_ID)=1/*H_IDC_IDC_NameTitleLevel0x1000蔬菜蔬菜00x581001根菜類蔬菜10x5AC01005蘿卜蔬菜20x5AC01006胡蘿卜蔬菜2*/。
關于SQL Server 2008中有哪些分層數據類型就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。