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

Chức năng Thay thế Oracle

Nếu bạn không muốn cập nhật bảng hiện có và chỉ muốn chọn dữ liệu thì bạn có thể sử dụng truy vấn hơi tốn công sức này.

http://sqlfiddle.com/#!4/22909/4

WITH changed_table AS
     (SELECT val1, EXTRACTVALUE (x.COLUMN_VALUE, 'e') val2new
        FROM (SELECT val1, val2 xml_str
                FROM table1),
             TABLE (XMLSEQUENCE (XMLTYPE (   '<e><e>'
                                          || REPLACE (xml_str, ',', '</e><e>')
                                          || '</e></e>'
                                         ).EXTRACT ('e/e')
                                )
                   ) x)
SELECT ct.val1, listagg(table2.val2,',') within group (order by table2.val2) val2
  FROM changed_table ct, table2 table2
 WHERE ct.val2new = table2.val1
group by ct.val1;

Tôi đã sử dụng XMLTYPE để phân tách các số được phân tách bằng dấu phẩy thành các hàng. Sau đó, nối các hàng với bảng thứ hai để lấy mô tả và cuối cùng sử dụng hàm LISTAGG để tạo thành chuỗi được phân tách bằng dấu phẩy. Không biết truy vấn này hiệu quả như thế nào. Tôi đồng ý với nhận xét của Mark Bannister.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các phương pháp hay nhất:Nhiệm vụ bảo trì và nâng cao cho Đám mây Oracle

  2. Chuỗi con sử dụng Oracle Khi có nhiều Kết quả phù hợp?

  3. Làm cách nào để chọn hàng thứ 10, 20, 30 ... trong kết quả của một truy vấn chọn lọc khác

  4. Jdbc kiểm tra khả năng - bản phát hành savepoint

  5. Các đường mòn kiểm tra Oracle DB