日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XML常用方法

發布時間:2024/10/8 asp.net 90 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML常用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Examples:

?

--1、表連接條件查詢

?

DECLARE?? @names?? XML?

? SET??@names?? =?? '<root>?

?<row??id="1">aa</row>?

?<row??id="2">bb</row>?

?</root>'?

??

SELECT???

??? A.id,?

??? name?? =?? @names.value('(/root/row[@id=sql:column("A.id")])[1]',?? 'varchar(10)')?

FROM(?

??? SELECT??id?? =?? 1?? UNION?? ALL?

??? SELECT??id?? =?? 2?

)A??

?

/*

id? name

1?? aa

2?? bb

*/

?

?

--2、變量傳參

?

go

?

DECLARE?? @a?? XML?

SET?? @a?? =?? '<root>?

<row??id="1">aa</row>?

<row??id="2">bb</row>?

</root>'?

?

DECLARE?? @id?? int?

SET?? @id?? =?? 2?

SELECT?? @a.value('(/root/row[@id=sql:variable("@id")])[1]',?? 'varchar(10)')??

?

?

--3、條件exist用法

IF OBJECT_ID('Tempdb..#T') IS NOT NULL

??? DROP TABLE #T

CREATE TABLE #T (

??? ProductID????????? int primary key,

???CatalogDescription xml)

Go

insert into #T values(1,'<ProductDescriptionProductID="1" ProductName="SomeName" />')

go

?

SELECT ProductID,

????CatalogDescription.value('(/ProductDescription/@ProductName)[1]', 'varchar(40)') as PName,

??? t.CatalogDescription.exist('/ProductDescription[@ProductName="SomeName"]') AS IsExists

FROM #T AS T

where t.CatalogDescription.exist('/ProductDescription[@ProductName="SomeName"]')=1

/*

ProductID?? PName?? IsExists

1?? SomeName??? 1

*/

GO

?

--4XMLnodes+CROSS APPLY 應用

?

Declare @x XML

Set @x ='

<RelOp NodeId="10"PhysicalOp="Index Seek" LogicalOp="Index Seek" >

?????<OutputList>

???????<ColumnReference Column="Bmk1010" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]"Column="DateModified" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]" Column="FID" />

?????</OutputList>

<Object Database="[DB1]"Schema="[dbo]" Table="[Tab2]" Index="[IX_Tab2_1]"Alias="[Tab2]" />

?????<OutputList>

???????<ColumnReference Column="Bmk1010" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]"Column="DateModified" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]" Column="FID" />

?????</OutputList>

<Object Database="[DB1]"Schema="[dbo]" Table="[[Tab1]]"Index="[IX_Tab2_3]" Alias="[[Tab1]]" />

?????<OutputList>

???????<ColumnReference Column="Bmk1010" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]"Column="DateModified" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]" Column="FID" />

?????</OutputList>

?

</RelOp>

<RelOp NodeId="12" >

?????<OutputList>

???????<ColumnReference Column="Bmk1010" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]"Column="DateModified" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]" Column="FID" />

?????</OutputList>

?

<Object Database="[DB1]"Schema="[dbo]" Table="[Tab2]" Alias="[Tab2]"/>

?????<OutputList>

???????<ColumnReference Column="Bmk1010" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]"Column="DateModified" />

???????<ColumnReference Database="[DB1]" Schema="[dbo]"Table="[Tab2]" Alias="[Tab2]" Column="FID" />

?????</OutputList>

?

</RelOp>

'

select

??? t.c.value('@Database','nvarchar(255)') Databse

??? ,t.c.value('@Table','nvarchar(255)')??? tbls

??? ,t.c.value('@Index','nvarchar(255)')??? indxs??

from @x.nodes('//Object') t(c)

/*

Databsetbls??? indxs

[DB1]?? [Tab2]? [IX_Tab2_1]

[DB1]?? [[Tab1]]??? [IX_Tab2_3]

[DB1]?? [Tab2]? NULL

*/

?

Select

??? u.d.value('@NodeId','nvarchar(255)') NodeId

From @x.nodes('//RelOp') u(d)

/*

10

12

*/

?

SELECT

??? u.d.value('@NodeId','nvarchar(255)') NodeId,

??? t.c.value('@Database','nvarchar(255)') Databse,

??? t.c.value('@Table','nvarchar(255)')tbls,

??? t.c.value('@Index','nvarchar(255)')indxs

FROM @x.nodes('RelOp') u(d)

??? CROSS APPLY u.d.nodes('Object') t(c)

/*

?

NodeId? Databsetbls??? indxs

10? [DB1]?? [Tab2]? [IX_Tab2_1]

10? [DB1]?? [[Tab1]]??? [IX_Tab2_3]

12? [DB1]?? [Tab2]? NULL

?

*/

?

--5XML的排序號DENSE_RANK

?

DECLARE @x2 XML

SET @x2 = '<a><b><c>abc</c><c>def</c></b><b><c>abc</c><c>def</c></b></a>'

?

SELECT

??? b_nodes.unique_b_node,

??? c_node.value('(./text())[1]', 'varchar(50)') AS c_val

FROM

(

??? SELECT

??????? b_node.query('.') AS b_xml,

??????? b_node.value('for $s in . return count(../*[. << $s]) + 1', 'int') AS unique_b_node

??? FROM @x2.nodes('/a/b') AS b (b_node)

) b_nodes

CROSS APPLY b_nodes.b_xml.nodes('/b/c') AS c (c_node)

?

?

SELECT?

??? DENSE_RANK() OVER (ORDER BY b_node) AS unique_b_node,

??? c_node.value('(./text())[1]', 'varchar(50)') AS c_val

FROM @x2.nodes('/a/b') AS b (b_node)

CROSS APPLY b.b_node.nodes('./c') AS c (c_node)

?

/*

unique_b_node?? c_val

1?? abc

1?? def

2?? abc

2?? def

*/

轉載于:https://www.cnblogs.com/Roy_88/archive/2011/01/04/5463077.html

總結

以上是生活随笔為你收集整理的XML常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。