日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLServer2008原生的分層數(shù)據(jù)類型hierarchyid簡介

SQL Server 2008原生的分層數(shù)據(jù)類型hierarchyid是本文我們主要要介紹的內(nèi)容,接下來就讓我們通過實際的例子來介紹它的應(yīng)用,希望能夠?qū)δ兴鶐椭?/p>

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)確山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

如果是在SQL Server 2000中,我們需要讀取分層結(jié)構(gòu)數(shù)據(jù)時,不得不借助遞歸。在SQL server 2005中,我們可以使用CTE,當(dāng)然,好的數(shù)據(jù)結(jié)構(gòu)設(shè)計可以避免你使用CTE,請看這里:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html。

如果你是一個數(shù)據(jù)庫設(shè)計新手,那么在sql server 2008中可以使用新的原生分層結(jié)構(gòu)數(shù)據(jù)hierarchyid。

關(guān)于它的詳細(xì)說明,請看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ù)表而成。但不可以實現(xiàn)與XML互相轉(zhuǎn)換。

下面我們看一個示例:

 
 
 
  1. if OBJECT_ID('[Category_hierarchyid]') is not null  
  2. drop table [Category_hierarchyid]  
  3. go  
  4. --創(chuàng)建表  
  5. CREATE TABLE [Category_hierarchyid]  
  6. (  
  7. H_ID hierarchyid NOT NULL,  
  8. C_ID INT primary key identity(1000,1) NOT NULL,  
  9. C_Name NVARCHAR(50) NOT NULL,  
  10. Title NVARCHAR(50) NOT NULL  
  11. )  
  12. GO  
  13. TRUNCATE table [Category_hierarchyid]  
  14. GO  
  15. INSERT INTO [Category_hierarchyid]([H_ID],[C_Name],[Title])  
  16. select '/','蔬菜','蔬菜' union all  
  17. select '/1/','根菜類','蔬菜' union all  
  18. select '/2/','葉菜類','蔬菜' union all  
  19. select '/3/','茄果類','蔬菜' union all  
  20. select '/4/','甘藍(lán)類','蔬菜' union all  
  21. select '/1/1/','蘿卜','蔬菜' union all  
  22. select '/1/1/','胡蘿卜','蔬菜' union all  
  23. select '/4/2/','甘藍(lán)','蔬菜' union all  
  24. select '/2/4/','花椰菜','蔬菜' union all  
  25. select '/3/3/','茄子','蔬菜' union all  
  26. select '/3/3/','番茄','蔬菜' union ALL  
  27. select '/1/1/5/','白蘿卜','蔬菜'  
  28. go 

SQL server 2008 中的原生分層數(shù)據(jù):hierarchyid

--查看所有的分類

 
 
 
  1. SELECT * FROM [Category_hierarchyid]  
  2. /*  
  3. H_ID C_ID C_Name Title  
  4. 0x 1000 蔬菜 蔬菜  
  5. 0x58 1001 根菜類 蔬菜  
  6. 0x68 1002 葉菜類 蔬菜  
  7. 0x78 1003 茄果類 蔬菜  
  8. 0x84 1004 甘藍(lán)類 蔬菜  
  9. 0x5AC0 1005 蘿卜 蔬菜  
  10. 0x5AC0 1006 胡蘿卜 蔬菜  
  11. 0x85A0 1007 甘藍(lán) 蔬菜  
  12. 0x6C20 1008 花椰菜 蔬菜  
  13. 0x7BC0 1009 茄子 蔬菜  
  14. 0x7BC0 1010 番茄 蔬菜  
  15. 0x5AE3 1011 白蘿卜 蔬菜  
  16. */ 

--查看所有的分類及級別

 
 
 
  1. SELECT *,H_ID.GetLevel() AS Level FROM [Category_hierarchyid]  
  2. /*  
  3. H_ID C_ID C_Name Title Level  
  4. 0x 1000 蔬菜 蔬菜 0  
  5. 0x58 1001 根菜類 蔬菜 1  
  6. 0x68 1002 葉菜類 蔬菜 1  
  7. 0x78 1003 茄果類 蔬菜 1  
  8. 0x84 1004 甘藍(lán)類 蔬菜 1  
  9. 0x5AC0 1005 蘿卜 蔬菜 2  
  10. 0x5AC0 1006 胡蘿卜 蔬菜 2  
  11. 0x85A0 1007 甘藍(lán) 蔬菜 2  
  12. 0x6C20 1008 花椰菜 蔬菜 2  
  13. 0x7BC0 1009 茄子 蔬菜 2  
  14. 0x7BC0 1010 番茄 蔬菜 2  
  15. 0x5AE3 1011 白蘿卜 蔬菜 3  
  16. */ 

 

--查看根菜類及其子分類

 
 
 
  1. DECLARE @Parent hierarchyid  
  2. SELECT @Parent=H_ID FROM [Category_hierarchyid] WHERE C_ID=1001 
  3. ----PRINT @Parent.ToString()  
  4. SELECT *,H_ID.GetLevel() AS Level FROM [Category_hierarchyid]  
  5. WHERE H_ID.IsDescendantOf(@Parent)=1  
  6. /*  
  7. H_ID C_ID C_Name Title Level  
  8. 0x58 1001 根菜類 蔬菜 1  
  9. 0x5AC0 1005 蘿卜 蔬菜 2  
  10. 0x5AC0 1006 胡蘿卜 蔬菜 2  
  11. 0x5AE3 1011 白蘿卜 蔬菜 3  
  12. */ 

 

--查看胡蘿卜及其所有父分類

 
 
 
  1. DECLARE @Son hierarchyid  
  2. SELECT @Son=H_ID FROM [Category_hierarchyid] WHERE C_ID=1006 
  3. SELECT *,H_ID.GetLevel()AS Level FROM [Category_hierarchyid]  
  4. WHERE @Son.IsDescendantOf(H_ID)=1  
  5. /*  
  6. H_ID C_ID C_Name Title Level  
  7. 0x 1000 蔬菜 蔬菜 0  
  8. 0x58 1001 根菜類 蔬菜 1  
  9. 0x5AC0 1005 蘿卜 蔬菜 2  
  10. 0x5AC0 1006 胡蘿卜 蔬菜 2  
  11. */ 

 

關(guān)于SQL Server 2008原生的分層數(shù)據(jù)類型hierarchyid的知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!


本文名稱:SQLServer2008原生的分層數(shù)據(jù)類型hierarchyid簡介
文章鏈接:http://www.dlmjj.cn/article/cossipc.html