關(guān)于SQL Server 2000對XML支持的一些見解
關(guān)于SQL Server 2000對XML支持的一些見解主要針對'select; 字段1,字段2,...,字段n from 表或多表聯(lián)合查詢 where 條件 for xml auto'類似語句的討論
本人在使用以上語句生成XML數(shù)據(jù)時,發(fā)現(xiàn)了一些SQL Server 2000生成XML數(shù)據(jù)的一些規(guī)律,給我的感覺是要求太苛刻了,從中也可以看出微軟早期對XML支持的不足.現(xiàn)在就把我的這些體會寫給大家看看,不對不足的地方望大家指出。XML可以很方便地描述樹型結(jié)構(gòu)數(shù)據(jù),相對于關(guān)系型數(shù)據(jù)來說,這方面就有點不足。為此從關(guān)系型數(shù)據(jù)轉(zhuǎn)換到樹型結(jié)構(gòu)數(shù)據(jù)就比較麻煩。還好,SQL Server 2000提供了這方面的轉(zhuǎn)換接口。但想轉(zhuǎn)換好也是有條件的。
前提:SQL Server 2000已經(jīng)有描述樹型結(jié)構(gòu)數(shù)據(jù)的基本表(視圖)[如大學(xué)里的院系班的樹型結(jié)構(gòu)信息,院信息一個表、系信息一個表、班信息一個表,表之間已經(jīng)建立了主外鍵關(guān)系]
1、要顯示的字段的位置是有順序的,如要正確顯示院系班的樹型結(jié)構(gòu)關(guān)系,轉(zhuǎn)換SQL語句應(yīng)該這么寫: select 院,系,班 from 院,系,班 where 條件 for xml auto2、盡量不要對顯示的字段作任何運算與處理,因為這樣會破壞基本表(視圖)的數(shù)據(jù)作為某一層數(shù)據(jù)的約定。 比如對'select 院,系,班 from 院,系,班 where 條件 for xml auto' 語句的“系”字段作了一些運算與處理后, 則SQL Server 2000無法正確地描述'系'字段生成XML數(shù)據(jù)后屬于那一層數(shù)據(jù)。一般情況下,SQL Server 2000會把”系“字段自動加進”院“或”班“一層。這樣就得不到我們想要的結(jié)果。3、多表聯(lián)合查詢時,不要有子查詢,因為即使你用了子查詢也是沒用的, 'select; 字段1,字段2,...,字段n from 表或多表聯(lián)合查詢 where 條件 for xml auto'這樣的轉(zhuǎn)換語句是只認(rèn)基本表與視圖的。; 別妄想用子查詢實現(xiàn)一些復(fù)雜的功能。
以上是自已在使用'select; 字段1,字段2,...,字段n from 表或多表聯(lián)合查詢 where 條件 for xml auto'語句時的一些體會,胡言亂語了一通。
http://blog.csdn.net/cyz1980/archive/2007/07/26/1710010.aspx
