您好,登錄后才能下訂單哦!
這篇文章給大家介紹SQL Server 2008中有哪些分層數(shù)據(jù)類型,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
SQLServer2008原生的分層數(shù)據(jù)類型有哪些
假如是在SQLServer2000中,我們需要讀取分層結(jié)構(gòu)數(shù)據(jù)時(shí),不得不借助遞歸。在SQLserver2005中,我們可以使用CTE,當(dāng)然,好的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)可以避免你使用CTE,請(qǐng)看這里:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html。
假如你是一個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)新手,那么在sqlserver2008中可以使用新的原生分層結(jié)構(gòu)數(shù)據(jù)hierarchyid。
關(guān)于它的詳細(xì)說(shuō)明,請(qǐng)看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
需要注意的是,它可以改造傳統(tǒng)數(shù)據(jù)表而成。但不可以實(shí)現(xiàn)與XML互相轉(zhuǎn)換。
SQLServer2008原生的分層數(shù)據(jù)類型有哪些
下面我們看一個(gè)示例:
ifOBJECT_ID('[Category_hierarchyid]')isnotnulldroptable[Category_hierarchyid]go--創(chuàng)建表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/','甘藍(lán)類','蔬菜'unionallselect'/1/1/','蘿卜','蔬菜'unionallselect'/1/1/','胡蘿卜','蔬菜'unionallselect'/4/2/','甘藍(lán)','蔬菜'unionallselect'/2/4/','花椰菜','蔬菜'unionallselect'/3/3/','茄子','蔬菜'unionallselect'/3/3/','番茄','蔬菜'unionALLselect'/1/1/5/','白蘿卜','蔬菜'go
SQLserver2008中的原生分層數(shù)據(jù):hierarchyid
--查看所有的分類
SELECT*FROM[Category_hierarchyid]/*H_IDC_IDC_NameTitle0x1000蔬菜蔬菜0x581001根菜類蔬菜0x681002葉菜類蔬菜0x781003茄果類蔬菜0x841004甘藍(lán)類蔬菜0x5AC01005蘿卜蔬菜0x5AC01006胡蘿卜蔬菜0x85A01007甘藍(lán)蔬菜0x6C201008花椰菜蔬菜0x7BC01009茄子蔬菜0x7BC01010番茄蔬菜0x5AE31011白蘿卜蔬菜*/
--查看所有的分類及級(jí)別
SELECT*,H_ID.GetLevel()ASLevelFROM[Category_hierarchyid]/*H_IDC_IDC_NameTitleLevel0x1000蔬菜蔬菜00x581001根菜類蔬菜10x681002葉菜類蔬菜10x781003茄果類蔬菜10x841004甘藍(lán)類蔬菜10x5AC01005蘿卜蔬菜20x5AC01006胡蘿卜蔬菜20x85A01007甘藍(lán)蔬菜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*/。
關(guān)于SQL Server 2008中有哪些分層數(shù)據(jù)類型就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。