如何对SQL Server中的XML数据进行insert、update、delete . -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    SQL Server 2005/2008增加了对XML数据的支持,同时也新增了几种操作XML的方法,本文主要以SQL Server 2008为例介绍如何对XML数据进行insert、update、delete,

如何对SQL Server中的XML数据进行insert、update、delete .

    SQL Server中新增加了XML.Modify()方法,分别为xml.modify(insert),xml.modify(delete),xml.modify(replace)对应XML的插入,删除和修改操作。

    本文以下面XML为例,对三种DML进行说明:

    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.Modify(Insert)语句介绍

    A.利用as first,at last,before,after四个参数将元素插入指定的位置

    set @XMLVar.modify(

    'insert as first into (/catalog[1]/book[1])')

    set @XMLVar.modify(

    'insert as last into (/catalog[1]/book[1])')

    set @XMLVar.modify(

    'insert before (/catalog[1]/book[1]/author[1])')

    set @XMLVar.modify(

    'insert after (/catalog[1]/book[1]/author[1])')

    SELECT @XMLVar.query('/catalog[1]/book[1]');

    结果集为:

    1:

    2:

    3: Windows Step By Step

    4:

    5: Bill Zack

    6:

    7: 49.99

    8:

    9:

    B.将多个元素插入文档中

    --方法一:利用变量进行插入

    DECLARE @newFeatures xml;

    SET @newFeatures = N';

    one element

    second element'

    SET @XMLVar.modify(' )

    insert sql:variable("@newFeatures")

    into (/catalog[1]/book[1])'

    --方法二:直接插入

    set @XMLVar.modify(')

    insert (one element,second element)

    into (/catalog[1]/book[1]/author[1])'

    SELECT @XMLVar.query('/catalog[1]/book[1]');

    结果集为:

    1:

    2: Windows Step By Step

    3: Bill Zack

    4: one element

    5: second element

    6: 

    7: 49.99

    8: one element

    9: second element

    10:

    C.将属性插入文档中

    --使用变量插入

    declare @var nvarchar(10) = '变量插入'

    set @XMLVar.modify(

    'insert (attribute var {sql:variable("@var")}))

    into (/catalog[1]/book[1])'

    --直接插入

    set @XMLVar.modify(

    'insert (attribute name {"直接插入"}))

    into (/catalog[1]/book[1]/title[1])'

    --多值插入

    set @XMLVar.modify(

    'insert (attribute Id {"多值插入1"},attribute name {"多值插入2"}) )

    into (/catalog[1]/book[1]/author[1])'

    SELECT @XMLVar.query('/catalog[1]/book[1]');

    结果集为:

    1:

    2: Windows Step By Step

    3: Bill Zack

    4: 49.99

    5:

    D.插入文本节点

    set @XMLVar.modify(

    'insert text{"at first"} as first)

    into (/catalog[1]/book[1])'

    SELECT @XMLVar.query('/catalog[1]/book[1]');

    结果集为:

    1:

    2: at first

    3: Windows Step By Step

    4: Bill Zack

    5: 49.99

    6:

    注意:插入本文同样具体 as first,as last,before,after四种选项,可以参考A中的使用方法

    E.插入注释节点

    set @XMLVar.modify(

    'insert )

    before (/catalog[1]/book[1]/title[1])'

    SELECT @XMLVar.query('/catalog[1]/book[1]');

    结果集为:

    1:

    2:

    3: Windows Step By Step

    4: Bill Zack

    5: 49.99

    6:

    注意插入注释节点同样具体 as first,as last,before,after四种选项,可以参考A中的使用方法

    F.插入处理指令

    set @XMLVar.modify(

    'insert )

    before (/catalog[1]/book[1]/title[1])'

    SELECT @XMLVar.query('/catalog[1]/book[1]');结果集为:

    1:

    2: 

    3: Windows Step By Step

    4: Bill Zack

    5: 49.99

    6:

    注意插入处理指令同样具体 as first,as last,before,after四种选项,可以参考A中的使用方法

    G.根据 if 条件语句进行插入

    set @XMLVar.modify(

    'insert )

    if (/catalog[1]/book[1]/title[2]) then

    text{"this is a 1 step"}

    else ( text{"this is a 2 step"} )

    into (/catalog[1]/book[1]/price[1])'

    SELECT @XMLVar.query('/catalog[1]/book[1]');

    结果集为:

    1:

    2: Windows Step By Step

    3: Bill Zack

    4: 49.99this is a 2 step

    5:

    2.XML.Modify(delete)语句介绍

    --删除属性

    set @XMLVar.modify('delete /catalog[1]/book[1]/@category')

    --删除节点

    set @XMLVar.modify('delete /catalog[1]/book[1]/title[1]')

    --删除内容

    set @XMLVar.modify('delete /catalog[1]/book[1]/author[1]/text()')

    --全部删除

    set @XMLVar.modify('delete /catalog[1]/book[2]')

    SELECT @XMLVar.query('/catalog[1]');

    结果集为:

    1:

    2:

    3:

    4: 49.99

    5:

    6:

    7: Windows Cluster Server

    8: Stephen Forte

    9: 59.99

    10:

    11:

    3.XML.Modify(replace)语句介绍

    --替换属性

    set @XMLVar.modify('replace value of(/catalog[1]/book[1]/@category))

    with ("替换属性")'

    --替换内容

    set @XMLVar.modify('replace value of(/catalog[1]/book[1]/author[1]/text()[1]))

    with("替换内容")'

    --条件替换

    set @XMLVar.modify('replace value of (/catalog[1]/book[2]/@category))

    with(

    if(count(/catalog[1]/book)>4) then

    "条件替换1"

    else

    "条件替换2")'

    SELECT @XMLVar.query('/catalog[1]');

    结果集为:

    1:

    2: 

    3: Windows Step By Step

    4: 替换内容

    5: 49.99

    6: 

    7: 

    8: Developing ADO .NET

    9: Andrew Brust

    10: 39.93

    11: 

    12: 

    13: Windows Cluster Server

    14: Stephen Forte

    15: 59.99

    16: 

    17:

    作者“cnming”

最新文章