SQL Server 中對XML資料的五種基本操作

2022-02-23 05:28:53 字數 2134 閱讀 3745

1.xml.exist

輸入為xquery表示式,返回0,1或是null。0表示不存在,1表示存在,null表示輸入為空

2.xml.value

輸入為xquery表示式,返回乙個sql server標量值

3.xml.query

輸入為xquery表示式,返回乙個sql server xml型別流

4.xml.nodes

輸入為xquery表示式,返回乙個xml格式文件的一列行集

5.xml.modify

使用xquery表示式對xml的節點進行insert , update 和 delete 操作。

下面通過例子對上面的五種操作進行說明:

declare @xmlvar xml = '

windows step by step

bill zack

49.99

developing ado .net

andrew brust

39.93

windows cluster server

stephen forte

59.99

'1. xml.exist

select @xmlvar.exist('/catalog/book')-----返回1  

select @xmlvar.exist('/catalog/book/@category')-----返回1  

select @xmlvar.exist('/catalog/book1')-----返回0  

set @xmlvar = null  

select @xmlvar.exist('/catalog/book')-----返回null

2.xml.value

select @xmlvar.value('/catalog[1]/book[1]','varchar(max)')  

select @xmlvar.value('/catalog[1]/book[2]/@category','varchar(max)') 

select @xmlvar.value('/catalog[2]/book[1]','varchar(max)')  

結果集為:  

windows step by stepbill zack49.99   developer   null

3.xml.query

select @xmlvar.query('/catalog[1]/book')  

select @xmlvar.query('/catalog[1]/book[1]')  

select @xmlvar.query('/catalog[1]/book[2]/author')

結果集分別為:

windows step by step

bill zack

49.99

developing ado .net

andrew brust

39.93

windows cluster server

stephen forte

59.99

windows step by step

bill zack

49.99

andrew brust

4.xml.nodes

select t.c.query('.') as result from @xmlvar.nodes('/catalog/book') as t(c)  

select t.c.query('title') as result from @xmlvar.nodes('/catalog/book') as t(c)

結果集分別為:

windows step by step

bill …………

developing ado .net

andrew …………

windows cluster server

stephen …………

windows step by step

developing ado .net

windows cluster server

5.xml.modify

關於modify內容,請參見

原創自csdn tjvictor專欄

sqlserver2008對XML的操作

sqlserver2008對xml的解析 sql對xml資料的操作 declare xml xml set xml student1 student2 student3 student4 student5 1 查詢 select xml.query xml student select xml.qu...

SQL SERVER中XML命名空間

有xml如下 create table a params xml insert into a params values 202014111101 013920130005 name0005 0prod.1000000100088400 msgbody節點聲名了命名空間,用平常的查詢語句是查不到資料...

SQLServer中設定XML索引

xml索引分為主xml索引和次xml索引 1.主xml索引 為了完整 一致的表示xml的值,格式 create primary xml index indexname on tablename columname 2.次xml索引 對於xpath和xquery表示式,可以使用xml次索引 path索...