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

Xóa thẻ trống khỏi xmltype oracle

Sử dụng DELETEXML và tìm XPath //*[not(text())][not(*)] để tìm các phần tử không chứa văn bản và không có phần tử con:

SQL Fiddle

Thiết lập lược đồ Oracle 11g R2 :

CREATE TABLE table_name ( xml ) AS
SELECT XMLTYPE( '<MESSAGE>
<LOCATIONS>
  <LOCATION_ID>9999</LOCATION_ID>
  <LOC_TYPE>S</LOC_TYPE>
  <NAME>Test Location</NAME> 
  <PHONE_NUM>08 </PHONE_NUM>
   <LAST_MODIFIED_BY/>
   <LAST_MODIFIED_DATE/>
   <POS_CODE/>
</LOCATIONS>
</MESSAGE>' ) FROM DUAL;

Truy vấn 1 :

SELECT DELETEXML(
         xml,
         '//*[not(text())][not(*)]'
       ).getStringVal()
FROM   table_name

Kết quả :

|                                                                                            DELETEXML(XML,'//*[NOT(TEXT())][NOT(*)]').GETSTRINGVAL() |
|-----------------------------------------------------------------------------------------------------------------------------------------------------|
| <MESSAGE><LOCATIONS><LOCATION_ID>9999</LOCATION_ID><LOC_TYPE>S</LOC_TYPE><NAME>Test Location</NAME><PHONE_NUM>08 </PHONE_NUM></LOCATIONS></MESSAGE> |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm văn bản mờ trong Oracle

  2. Cách thực thi tệp tập lệnh .SQL bằng c #

  3. Làm cách nào để lấy sự kiện “tiếp theo” khi giá trị thay đổi đối với các mục có thể được xử lý nhiều lần?

  4. tìm kiếm văn bản oracle blob

  5. Trích xuất phần thời gian từ cột TimeStamp trong ORACLE