欧美国产另类久热|951超碰伊人久久|伊人影视久久久久|色婷婷亚洲小电影|色东京热69XX|婷婷玖玖深爱网|加勒比东京热网站|无码A级毛片在线观看|一级a毛一级a看|中文字幕人妻欧美

SQLSERVER中XML查詢(xún):FORXML指定AUTO
來(lái)源:易賢網(wǎng) 閱讀:2252 次 日期:2014-11-03 09:34:45
溫馨提示:易賢網(wǎng)小編為您整理了“SQLSERVER中XML查詢(xún):FORXML指定AUTO”,方便廣大網(wǎng)友查閱!

SQL SERVER中XML查詢(xún):FOR XML指定AUTO

前言

在SQL SERVER中,XML查詢(xún)可以指定RAW,AUTO,EXPLICIT,PATH。本文用一些實(shí)例介紹SQL SERVER中指定AUTO的XML查詢(xún)。

基礎(chǔ)示例

片斷1:

with TestXml

as

(

select 1 as id,N'LeeWhoeeUniversity' as name

union all

select 2,N'DePaul'

union all

select 3 ,null

)

select id,name from testxml for xml auto

結(jié)果:

<testxml id="1" name="LeeWhoeeUniversity" />

<testxml id="2" name="DePaul" />

<testxml id="3" />

用表名做元素名稱(chēng),即替代RAW模式中的“row”。

下面看多表的查詢(xún)(片斷2):

with [order]

as

(

select 122 as orderid, 1 as productid,10 as quantity

union all

select 123,1 as productid,100 as quantity

union all

select 124,2,20

union all

select 125,3 ,5

),

product

as

(

select 1 as id,N'LeeWhoeeUniversity' as name

union all

select 2,N'DePaul'

)

select * from product,[order] where [order].productid=product.id for xmlauto

結(jié)果:

<product id="1" name="LeeWhoeeUniversity">

<order orderid="122" productid="1" quantity="10" />

<order orderid="123" productid="1" quantity="100" />

</product>

<product id="2" name="DePaul">

<order orderid="124" productid="2" quantity="20" />

</product>

表名順序敏感

(見(jiàn)上面查詢(xún)中粗體部分)

如果把product和order換一下位置,片斷3:

with [order]

as

(

select 122 as orderid, 1 as productid,10 as quantity

union all

select 123,1 as productid,100 as quantity

union all

select 124,2,20

union all

select 125,3 ,5

),

product

as

(

select 1 as id,N'LeeWhoeeUniversity' as name

union all

select 2,N'DePaul'

)

select * from [order],product where [order].productid=product.id for xml auto

結(jié)果:

<order orderid="122" productid="1" quantity="10">

<product id="1" name="LeeWhoeeUniversity" />

</order>

<order orderid="123" productid="1" quantity="100">

<product id="1" name="LeeWhoeeUniversity" />

</order>

<order orderid="124" productid="2" quantity="20">

<product id="2" name="DePaul" />

</order>

當(dāng)然,AUTO模式同樣也可以指定ELEMENTS,BINARY BASE64,同RAW。(SQL SERVER中XML查詢(xún):FOR XML指定RAW)

返回的 XML 成形過(guò)程中的 AUTO 模式試探方法

AUTO 模式根據(jù)查詢(xún)決定返回的 XML 的形式。 在決定嵌套元素的方式時(shí),AUTO 模式試探方法會(huì)比較相鄰行中的列值。ntext、text、image 和xml 類(lèi)型以外的所有類(lèi)型的列都會(huì)進(jìn)行比較。(n)varchar(max) 和varbinary(max) 類(lèi)型的列也會(huì)進(jìn)行比較。

上面的第一個(gè)指定AUTO的SQL語(yǔ)句(片斷2)結(jié)果集為:

id name orderid productid quantity

1 LeeWhoeeUniversity 122 1 10

1 LeeWhoeeUniversity 123 1 100

2 DePaul 124 2 20

AUTO 模式試探方法將比較表 product 的所有值(Id 列和 Name 列)。因?yàn)榍皟尚械?Id 列和 Name 列具有相同的值,所以向結(jié)果中添加了一個(gè)具有兩個(gè) <order> 子元素的 <product> 元素。

<product id="1" name="LeeWhoeeUniversity">

<order orderid="122" productid="1" quantity="10" />

<order orderid="123" productid="1" quantity="100" />

</product>

<product id="2" name="DePaul">

<order orderid="124" productid="2" quantity="20" />

</product>

text類(lèi)型的特殊

如果把Name 列改為 text 類(lèi)型。 AUTO 模式試探方法不比較此類(lèi)型的值, 而是認(rèn)為這些值不相同。

見(jiàn)下面代碼片斷4:

declare @order table(orderid int,productid int,quantity int)

declare @product table(id int,name text)

insert into @order

select 122 as orderid, 1 as productid,10 as quantity

union all

select 123,1 as productid,100 as quantity

union all

select 124,2,20

union all

select 125,3 ,5

insert into @product

select 1 ,N'LeeWhoeeUniversity'

union all

select 2,N'DePaul'

select * from @product as product,@order as [order] where [order].productid=product.id for xmlauto

結(jié)果:

<product id="1" name="LeeWhoeeUniversity">

<order orderid="122" productid="1" quantity="10" />

</product>

<product id="1" name="LeeWhoeeUniversity">

<order orderid="123" productid="1" quantity="100" />

</product>

<product id="2" name="DePaul">

<order orderid="124" productid="2" quantity="20" />

</product>

上面結(jié)果中name同為L(zhǎng)eeWhoeeUniversity的項(xiàng)被分成兩個(gè)product。

結(jié)果集排序?qū)UTO試探的影響

再看第一個(gè)指定AUTO的SQL語(yǔ)句,但是更改了orderid為使其結(jié)果集中相同id和name的項(xiàng)不連在一起:

with [order]

as

(

select 122 as orderid, 1 as productid,10 as quantity

union all

select 125,1 as productid,100 as quantity

union all

select 123,2,20

union all

select 124,3 ,5

),

product

as

(

select 1 as id,N'LeeWhoeeUniversity' as name

union all

select 2,N'DePaul'

)

select * from product,[order] where [order].productid=product.id

order by orderid

結(jié)果:

id name orderid productid quantity

1 LeeWhoeeUniversity 122 1 10

2 DePaul 123 2 20

1 LeeWhoeeUniversity 125 1 100

然后進(jìn)行指定AUTO的XML查詢(xún)(即語(yǔ)句上添加for xml auto),AUTO模式試探將生成以下結(jié)果:

<product id="1" name="LeeWhoeeUniversity">

<order orderid="122" productid="1" quantity="10" />

</product>

<product id="2" name="DePaul">

<order orderid="123" productid="2" quantity="20" />

</product>

<product id="1" name="LeeWhoeeUniversity">

<order orderid="125" productid="1" quantity="100" />

</product>

這樣相同id和name的product沒(méi)有連在一起。

總結(jié)

以上對(duì)指定AUTO的XML查詢(xún)就介紹完了,下一篇文章將繼續(xù)用實(shí)例介紹SQL SERVER中的XML查詢(xún):指定EXPLICIT查詢(xún)。

SQL SERVER中XML查詢(xún):FOR XML指定RAWSQL SERVER中XML查詢(xún):FOR XML指定AUTO

SQL SERVER中XML查詢(xún):FOR XML指定EXPLICIT

SQL SERVER中XML查詢(xún):FOR XML指定PATH關(guān)于XML類(lèi)型

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:SQLSERVER中XML查詢(xún):FORXML指定AUTO
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn)

版權(quán)所有:易賢網(wǎng)