Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle UpdateXML () thay đổi cấu trúc XML?

Tôi nghĩ rằng bạn có thể tránh được sự cố bằng cách thay thế văn bản trống bằng giá trị tạm thời, cập nhật tất cả văn bản khác, sau đó thay thế giá trị tạm thời bằng giá trị rỗng.

Tôi không hiểu XPath, có lẽ có một cách tốt hơn nhiều để làm điều này, nhưng cách này có vẻ hiệu quả:

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. Kết quả Cache

  2. Sự khác biệt ngầm định của luồng dữ liệu CAST so với ssis

  3. Tháng 7 năm 2016 PSU không tạo được isqora

  4. lấy tên từ các id được phân tách bằng dấu phẩy trong SQL

  5. Lệnh gọi getColumnName (0) đơn giản ném Chỉ mục cột không hợp lệ:getValidColumnIndex