sql >> Database teknologi >  >> RDS >> Oracle

Oracle UpdateXML() ændrer XML-struktur?

Jeg tror, ​​du kan undgå problemet ved at erstatte tom tekst med en midlertidig værdi, opdatere al den anden tekst og derefter erstatte den midlertidige værdi med en null.

Jeg forstår ikke XPath, der er sikkert en meget bedre måde at gøre dette på, men det ser ud til at virke:

SELECT
    --#3: Replace the temporary value with null, this keeps the start and end tag
    UpdateXML(
        --#2: Replace everything but the temporary value
        UpdateXML(
            --#1: Replace empty text with a temporary value
            UpdateXML(xmlData, '/TEST/VALUE[not(text())]', '<VALUE>TEMPORARY VALUE</VALUE>')
        ,'/TEST/VALUE[text()!="TEMPORARY VALUE"]/text()', 'hello')
    ,'/TEST/VALUE[text()="TEMPORARY VALUE"]/text()', null) examle
FROM (SELECT XMLType('<TEST><VALUE>hi</VALUE><VALUE>hola</VALUE><VALUE></VALUE></TEST>') as xmlData FROM DUAL);



  1. sql-forespørgsel for at vælge post med samme id, men forskellig værdi i to kolonner

  2. mysql-forespørgsel PHP:Jeg ønsker at et specifikt emne skal være først og derefter sortere resten af ​​emnerne

  3. Hver afledt tabel skal have sit eget alias - hvornår er noget en afledt tabel?

  4. Sådan konfigureres klynge-til-klynge-replikering til PostgreSQL