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

Không thể kéo kết quả bằng cách chuyển đầu vào là đường dẫn xml trong oracle

Giả sử bạn đang cố gắng lọc một ID trong XML, bạn gặp vấn đề với cú pháp, bạn đã cung cấp nút gốc là ActivityId thay vì Activity, bạn không truy cập vào nút ID, bạn đang sử dụng sai contains - và đó có thể không phải là điều bạn muốn; và bạn đang bỏ qua không gian tên.

Điều này sẽ chỉ tìm thấy các hàng mà XML có một ID cụ thể:

SELECT * from activity
where ExtractValue(xml,
  '/Activity/Agent/Territory/ns2:SalesTeamId/ns2:ID/text()',
  'xmlns="urn:astrazeneca:na:Activity:domain:3" xmlns:ns2="urn:astrazeneca:na:CommonTypes:domain:2"'
  ) = 10669;

Nhưng ExtractValue từ lâu đã không còn được dùng nữa, vì vậy bạn nên sử dụng XMLQuery để thay thế. Hoặc trong bối cảnh này, có lẽ sẽ hợp lý hơn khi sử dụng XMLExists, với giá trị bạn muốn nhúng:

SELECT * from activity
where XMLExists('
    declare default element namespace "urn:astrazeneca:na:Activity:domain:3";
    declare namespace ns2="urn:astrazeneca:na:CommonTypes:domain:2";
    /Activity/Agent/Territory/ns2:SalesTeamId/ns2:ID[text()=10669]
  '
  passing xml
);

hoặc có thể được cung cấp hữu ích hơn dưới dạng đối số:

SELECT * from activity
where XMLExists('
    declare default element namespace "urn:astrazeneca:na:Activity:domain:3";
    declare namespace ns2="urn:astrazeneca:na:CommonTypes:domain:2";
    /Activity/Agent/Territory/ns2:SalesTeamId/ns2:ID[text()=$id]
  '
  passing xml, 10669 as "id"
);

db <> fiddle

Sau đó, nếu bạn muốn trích xuất dữ liệu cụ thể từ XML trong các hàng phù hợp thì hãy xem XMLQuery hoặc XMLTable - nhưng đó là một vấn đề riêng biệt.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trình hướng dẫn mô hình dữ liệu thực thể có ngoại lệ khi cố gắng thêm kết nối Oracle mới

  2. Cách dễ nhất để tạo một cột SN SÀNG trong Oracle là gì?

  3. Làm cách nào để tải Oracle SCHEMA dưới dạng tập lệnh DDL với DBMS_METADATA (và SCHEMA_EXPORT)

  4. if-elseif-else 'điều kiện' trong SQL oracle

  5. Create_record biểu mẫu tiên tri