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