簡體   English   中英

替換或更新XML中的文本

[英]Replace or Update text in XML

我有一列關於XML數據。

SELECT roll_id, EXTRACT (xml_data, '/root/xmldata/empid') AS empid
  FROM employee_data
 WHERE roll_id IN (1, 2)

結果:

roll_id      empid  
     1       <empid>A11</empid>  
     2       <empid/>

如果我在更新查詢下運行,它將僅更新roll_id1。這不會影響roll_id2。有人可以建議我如何更新roll_id 2嗎? 我應該為roll_id運行替換嗎?

UPDATE employee_data
   SET xml_data =
          UPDATEXML (xml_data
                    ,'/root/xmldata/empid/text()'
                    ,'111')
 WHERE     roll_id IN (1,2)

從xpath刪除text()。

.../empid/text() -您正在尋找帶有文本節點的empid。 ... / empid`-您正在尋找空虛。

UPDATE employee_data
   SET xml_data =
          UPDATEXML (xml_data
                    ,'/root/xmldata/empid'
                    ,'111')
 WHERE     roll_id IN (1,2)

注意。 oracle 11.2不推薦使用updatexml和其他xml修改方法。 您應該使用。

update employee_data
   set xml_data   = xmlquery('copy $d := .  
       modify (  
         for $i in $d/root/xmldata/empid
         return (          
           replace value of node $i with "111"  
         )  
       )  
       return $d' passing xml_data returning content) where  roll_id IN (1,2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM