Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle UpdateXML() mengubah struktur XML?

Saya pikir Anda dapat menghindari masalah dengan mengganti teks kosong dengan nilai sementara, memperbarui semua teks lainnya, dan kemudian mengganti nilai sementara dengan nol.

Saya tidak mengerti XPath, mungkin ada cara yang jauh lebih baik untuk melakukan ini, tetapi ini tampaknya berhasil:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. prototipe ioctl di solaris libc

  2. Cara menghapus bagian dari string di Oracle

  3. Masukkan xmltype ke xmltype di tempat yang ditentukan [PL/SQL]

  4. Cara Mengatasi ORA-29280:jalur direktori tidak valid

  5. Bulan antara tidak mengembalikan nilai yang benar