色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

使用Microsoft SQL Server 2000的XML查詢

瀏覽:142日期:2023-10-31 10:08:30

由于XML本身的諸多優點,XML技術已被廣泛的使用,目前的好多軟件技術同XML緊密相關,比如微軟的。net 平臺對xml提供了強大的支持,提供System.Xml以及其子命名空間下的類型來操作xml.Ado.net通過核心類型DataSet出色的把關系型數據庫同xml進行了緊密集成。由于平常許多開發人員使用。net 來操作Sql server的到數據集后再轉換成xml,所以往往忽略Transact-SQL查詢生成XML數據的強大功能。對于一些項目使用XML查詢直接通過SQL生成xml會來的更為簡便,所以我通過在實際項目中的使用和查閱一些資料寫成一個知識點,一是溫故而知新,二是對于一些開發者剛好需要這方面的技術而還沒有找到比較快捷的學習方式提供一條途徑。

在SQL SERVER 2000中查詢生成XML的語法表達式比較簡潔,整個語法如下:

SELECT <;select_list>

FROM <;table_source>

WHERE <;search_condition>

FOR XML AUTO | RAW | EXPLICIT [,XMLDATA ] [,ELEMENTS] [,BINARY BASE64]

下面我將以Northwind數據庫來演示上面的表達式中所包含的各項功能,下面的查詢語句和返回結果都通過SQL SERVER 2000查詢分析器來執行和得到。

一。 使用AUTO模式

該模式我認為在生成單表xml數據方面是用得最多的,能滿足一般的需要。先來看他的簡單查詢。

1.簡單查詢

查詢語句:

SELECT CategoryID,

CategoryName

FROM Categories

WHERE CategoryID <3 FOR XML AUTO

返回結果:

<;Categories CategoryID='1' CategoryName='Beverages'/>

<;Categories CategoryID='2' CategoryName='Condiments'/>

也可以使用別名,

查詢語句:

SELECT CategoryID AS ID,

CategoryName,

GetDate() as CurrDate

FROM Categories MyTable

WHERE CategoryID <3 FOR XML AUTO

返回結果:

<;MyTable CategoryName='Beverages' CurrDate='2005-06-24T11:09:52.937'/>

<;MyTable CategoryName='Condiments' CurrDate='2005-06-24T11:09:52.937'/>

2.連接查詢

以兩個表為例,

查詢語句:

SELECT Categories.CategoryID,

Categories.CategoryName,

ProductID,

ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryID AND ProductID <;5

WHERE Categories.CategoryID <3 FOR XML AUTO

返回結果:

<;Categories CategoryID='1' CategoryName='Beverages'>

<;Products ProductID='1' ProductName='Chai'/>

<;/Categories>

<;Categories CategoryID='2' CategoryName='Condiments'>

<;Products ProductID='2' ProductName='Chang'/>

<;/Categories>

可以看到表連接查詢可以生成分層次的Xml,不過需要注意的是SELECT子句中的父表的列要排在子表的列的前面,否則會出現你不想看到的結果,如:

查詢語句:

SELECT ProductID,Categories.CategoryID,Categories.CategoryName,ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryIDand ProductID <;5

WHERE Categories.CategoryID <;3FOR XML AUTO

返回結果:

<;Products ProductID='1' ProductName='Chai'>

<;Categories CategoryID='1' CategoryName='Beverages'/>

<;/Products>

<;Products ProductID='2' ProductName='Chang'>

<;Categories CategoryID='1' CategoryName='Beverages'/>

<;/Products>

<;Products ProductID='3' ProductName='Aniseed Syrup'>

<;Categories CategoryID='2' CategoryName='Condiments'/>

<;/Products>

<;Products ProductID='4' ProductName='Chef Anton&apos;s Cajun Seasoning'>

<;Categories CategoryID='2' CategoryName='Condiments'/>

<;/Products>

3.使用ELEMENTS選項

使用該選項可以生成以元素為中心的Xml表示,默認為屬性方式,不過屬性方式節省空間。需要注意的是使用ELEMENTS選項是一種全是或全否的形式,不能得到一部分是以元素表示而另一部分以屬性表示的Xml數據。

查詢語句:

SELECT CategoryID,

CategoryName

FROM Categories

WHERE CategoryID <3

FOR XML AUTO, ELEMENTS

返回結果:

<;Categories>

<;CategoryID>1<;/CategoryID>

<;CategoryName>Beverages<;/CategoryName>

<;/Categories>

<;Categories>

<;CategoryID>2<;/CategoryID>

<;CategoryName>Condiments<;/CategoryName>

<;/Categories>

在連接查詢時,

查詢語句:

SELECT Categories.CategoryID,

ProductID,

ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryIDand ProductID <;4

WHERE Categories.CategoryID <;3FOR XML AUTO, ELEMENTS

返回結果:

<;Categories>

<;CategoryID>1<;/CategoryID>

<;Products>

<;ProductID>1<;/ProductID>

<;ProductName>Chai<;/ProductName>

<;/Products>

<;Products>

<;ProductID>2<;/ProductID>

<;ProductName>Chang<;/ProductName>

<;/Products>

<;/Categories>

<;Categories>

<;CategoryID>2<;/CategoryID>

<;Products>

<;ProductID>3<;/ProductID>

<;ProductName>Aniseed Syrup<;/ProductName>

<;/Products>

<;/Categories>

4.檢索對二進制數據的XPath引用

這是對二進制數據的操作,

查詢語句:

SELECT CategoryID,

Picture

FROM Categories

WHERE CategoryID = 1

FOR XML AUTO

返回結果:

<;Categories CategoryID='1' Picture='dbobject/Categories[@CategoryID='1']/@Picture'/>

使用ELEMENTS方式,

查詢語句:

SELECT CategoryID,

Picture

FROM Categories

WHERE CategoryID = 1

FOR XML AUTO,ELEMENTS

返回結果:

<;Categories>

<;CategoryID>1<;/CategoryID>

<;Picture>dbobject/Categories[@CategoryID='1']/@Picture<;/Picture>

<;/Categories>

二。使用RAW模式

使用RAW模式不能使用ELEMENTS選項。

1.簡單查詢

查詢語句:

SELECT CategoryID,

CategoryName AS Nanme

FROM Categories

WHERE CategoryID <3

ORDER BY CategoryID DESC

FOR XML RAW

返回結果:

<;row CategoryID='2' Nanme='Condiments'/>

<;row CategoryID='1' Nanme='Beverages'/>

2.連接查詢

查詢語句:

SELECT Categories.CategoryID,

Categories.CategoryName,

ProductID,

ProductName

FROM Categories

JOIN Products ON Categories.CategoryID = Products.CategoryIDand ProductID <;4

WHERE Categories.CategoryID <;= 2FOR XML RAW

返回結果:

<;row CategoryID='1' CategoryName='Beverages' ProductID='1' ProductName='Chai'/>

<;row CategoryID='1' CategoryName='Beverages' ProductID='2' ProductName='Chang'/>

<;row CategoryID='2' CategoryName='Condiments' ProductID='3' ProductName='Aniseed Syrup'/>

標簽: Sql Server 數據庫
主站蜘蛛池模板: 成人亚洲精品 | 中文字幕天堂最新版在线网 | 成人午夜精品 | 国产精品久久国产精品99 | 成年人网站在线观看免费 | 国产草草影院 | 美国全免费特一级毛片 | 亚州黄色网址 | 国产在线视频区 | 欧美色大成网站www永久男同 | 国产大陆精品另类xxxx | 中文一区在线观看 | 毛片在线不卡 | 国产视频二区 | 一级毛片真人免费观看 | 日韩在线黄色 | 特黄女一级毛片 | 毛片免费全部免费观看 | 欧洲成人免费高清视频 | 美国一级毛片视频 | 国产99精品免费视频看6 | 又黄又爽视频好爽视频 | 国内自拍第1页 | 男女扒开双腿猛进入免费网站 | 99在线热视频只有精品免费 | 中国女警察一级毛片视频 | 欧美成人观看免费完全 | 亚洲男人精品 | 精品国产成人高清在线 | 国产精品久久久久一区二区 | 国产高清精品一级毛片 | 免费看成人毛片日本久久 | 欧美精品束缚一区二区三区 | 欧美理论片在线观看一区二区 | 一级做a爱片特黄在线观看 一级做a爱片特黄在线观看免费看 | 久久99精品视免费看 | 欧美亚洲精品一区 | 成年人视频网站免费 | 亚洲一成人毛片 | 九九精品免费视频 | 久久精品爱国产免费久久 |