none
请教一个MSSQL对xml类型数据操作的问题? RRS feed

  • 问题

  • 请教大牛:一个MSSQL操作XML类型数据的问题,我有一个比较复杂的XML,我想实现对这个xml的分步骤进行更新,请看示例代码里面的说明
    --目的:我想更新name="bob"的student的age 
    declare @xml1 xml='<students>
    						<student>
    							<name>tom</name>
    							<age>16</age>
    						</student>
    						<student>
    							<name>lisia</name>
    							<age></age>
    						</student>
    						<student>
    							<name>bob</name>
    							<age>18</age>
    						</student>
    					</students>'
    declare @xml2 xml
    --获取下层name="bob"的student节点,这里的xpath可能非常长
    set @xml2=@xml1.query('/students/student/name[text()="bob"]/..');
    if cast(@xml2 as nvarchar(max)) =''
    	print 'null'
    else
    	begin
    		set @xml2.modify('replace value of (/student/age/text())[1] with 20')
    		--@xml2 was modified,can not modify @xml1 ??
    	end
    select @xml1 [xml1],@xml2 [xml2]
    --怎样将对@xm12的修改反映到@xml1中去?也就是说最后修改的是原始的xml数据???


    yanglei



    • 已编辑 Lane3000 2021年9月27日 8:45
    2021年9月27日 6:24

全部回复