DECLARE @myDoc xml
SET @myDoc =
'
'
--SELECT @myDoc
-- 插入item的第1个子节点,此时不需要指定as first或as last
SET @myDoc.modify(N'
insert 张洪举
into (/root/item)[1]')
SELECT @myDoc
-- 插入item的第2个子节点,as first指定插入到同级子节点的前面
SET @myDoc.modify(N'
insert
SQL Server 开发宝典
as first into (/root/item)[1]')
SELECT @myDoc
-- 插入第2个item节点
SET @myDoc.modify('
insert
into (/root)[1]')
SELECT @myDoc
-- 向第2个item中插入第1个子节点
SET @myDoc.modify('
insert
SQL Server 的新增功能
as first into (/root/item)[2]')
SELECT @myDoc
GO
---------------------------------------------------二
DECLARE @myDoc xml
SET @myDoc = '
'
SELECT @myDoc
SET @myDoc.modify('
insert (
SQL Server 开发宝典,
张洪举
)
into (/root/item)[1]');
SELECT @myDoc
GO
---------------------------------------------------三
DECLARE @myDoc xml
SET @myDoc = N'
Ajax实战
张洪举
Ajax实战
张洪举
'
SELECT @myDoc
SET @myDoc.modify(N'
insert attribute ShipTo {"广州"}
into (/root/item[@ID=1])[1]');
SET @myDoc.modify(N'
insert attribute ShipVia {"UPS"}
into (/root/item[@ID=1])[1]');
SELECT @myDoc
-- 通过一个sql变量指定要插入属性ShipDate的值
DECLARE @ShipDate char(11)
SET @ShipDate='-01-23Z'
SET @myDoc.modify('
insert attribute ShipDate {sql:variable("@ShipDate") cast as xs:date ?}
into (/root/item[@ID=1])[1]') ;
SELECT @myDoc
-- 插入多个属性,属性之间使用逗号分隔,并包含在括号内
SET @myDoc.modify('
insert (
attribute PostCode {"253020" },
attribute Weight {"1.5"}
)
into (/root/item[@ID=1])[1]');
SELECT @myDoc
GO
---------------------------------------------------四
DECLARE @myDoc xml
SET @myDoc = N'
Ajax实战
张洪举
实战
卢桂章
'
SET @myDoc.modify('
insert
after (/root/item[@ID=2]/title)[1]');
SELECT @myDoc
GO
---------------------------------------------------五
DECLARE @myDoc xml
SET @myDoc = N'
Ajax实战
张洪举
实战
卢桂章
'
SET @myDoc.modify(N'
insert 上门未收]]>
into (/root/item[@ID=2])[1] ') ;
SELECT @myDoc
GO
---------------------------------------------------六
DECLARE @myDoc xml
SET @myDoc = N'
Ajax实战
张洪举
'
SET @myDoc.modify(N'
insert text{"订单列表"}
as first into (/root)[1]');
SELECT @myDoc
GO
---------------------------------------------------六
use jobproject
CREATE XML SCHEMA COLLECTION MySchemas
AS
N'<?xml version = "1.0"?>
xmlns:xsd="/2001/XMLSchema">
';
GO
-- 创建包含xml数据类型列的表
CREATE TABLE MyCustomer
(CustomerID int IDENTITY PRIMARY KEY,
CustomerItem xml(MySchemas));
GO
-- 向表中插入XML,该XML应当符合/customerschemas命名空间架构的定义
INSERT INTO MyCustomer
VALUES
(N'
北方书城
北京市海淀区知春路22号
2222222
刘先生
');
-- 使用XML DML insert插入另一个item节点到XML中
UPDATE MyCustomer
SET CustomerItem.modify('
declare namespace CS="/customerschemas";
insert (
东图大厦
长春市朝阳大街99号
1111111
孙×××
)
into (/CS:customer)[1] ')
WHERE CustomerID=1;
SELECT CustomerItem
FROM Mycustomer;
GO
---------------------------------------------------七
DECLARE @myDoc xml
SET @myDoc = '<?Instructions for=TheWC.exe ?>
这里是文本
Ajax实战
张洪举
实战
卢桂章
'
SELECT @myDoc
-- 删除注释
SET @myDoc.modify('
delete /root/comment()
')
SELECT @myDoc
-- 删除所有指令
SET @myDoc.modify('
delete //processing-instruction()
')
SELECT @myDoc
-- 删除ID为1的item中的文本节点
SET @myDoc.modify('
delete /root/item[@ID=1]/text()
')
SELECT @myDoc
-- 删除一个属性
SET @myDoc.modify('
delete /root/item[@ID=1]/@ShipTo
')
SELECT @myDoc
-- 删除一个元素
SET @myDoc.modify('
delete /root/item[@ID=2]/author
')
SELECT @myDoc
-- 删除ID为2的item节点
SET @myDoc.modify('
delete /root/item[@ID=2]
')
SELECT @myDoc
GO
---------------------------------------------------八
UPDATE MyCustomer
SET CustomerItem.modify('
declare namespace CS="/customerschemas";
delete /CS:customer/item[@ID=2]
');
SELECT CustomerItem FROM MyCustomer;
GO
---------------------------------------------------九
DECLARE @myDoc xml
SET @myDoc = '
Ajax实战
张洪举
实战
卢桂章
'
SELECT @myDoc
-- 更新ID为1的item中的title元素的文本
SET @myDoc.modify('
replace value of (/root/item[@ID=1]/title/text())[1]
with "Ajax实战攻略"
')
SELECT @myDoc
-- 更新属性值
SET @myDoc.modify('
replace value of (/root/item[@ID=2]/@ID)[1]
with "3"
')
SELECT @myDoc
---------------------------------------------------九
declare @xdoc xml
set @xdoc = N'
'
-------第一方法
select excel_path = t.c.value('@path' ,'varchar(255)')
,excel_name = t.c.value('@filename' ,'varchar(255)')
from @xdoc.nodes('/conn/excel') t (c)
where t.c.value('@id', 'int') = 1
-------第二方法
select excel_path = @xdoc.value('(/conn/excel[@id="1"]/@path)[1]', 'varchar(255)')
,excel_name = @xdoc.value('(/conn/excel[@id="1"]/@filename)[1]', 'varchar(255)')
-------第三方法
declare @excel_id int
set @excel_id = 1
select excel_path = @xdoc.value('(/conn/excel[@id=sql:variable("@excel_id")]/@path)[1]', 'varchar(255)')
,excel_name = @xdoc.value('(/conn/excel[@id=sql:variable("@excel_id")]/@filename)[1]', 'varchar(255)')