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

Phân biệt các giá trị CSV sử dụng REGEXP_REPLACE trong tiên tri

Bạn có thể sử dụng các bộ sưu tập của Oracles. CAST() được ghép nối với COLLECT() có thể tổng hợp các giá trị vào một tập hợp do người dùng xác định và sau đó SET() sẽ loại bỏ các bản sao. Sau đó, bạn có thể sử dụng LISTAGG() để chuyển đổi bộ sưu tập thành một chuỗi.

Thiết lập Oracle :

CREATE TYPE intlist IS TABLE OF INT;
/

CREATE TYPE stringlist IS TABLE OF VARCHAR2(4000);
/

CREATE TABLE table_name ( ColA NUMBER(5,0), ColB VARCHAR2(20) );
INSERT INTO table_name
  SELECT 1, 'POW' FROM DUAL UNION ALL
  SELECT 2, 'POW' FROM DUAL UNION ALL
  SELECT 1, 'POWPRO' FROM DUAL UNION ALL
  SELECT 1, 'PRO' FROM DUAL UNION ALL
  SELECT 2, 'PRO' FROM DUAL UNION ALL
  SELECT 1, 'PROUTL' FROM DUAL UNION ALL
  SELECT 1, 'TNEUTL' FROM DUAL UNION ALL
  SELECT 1, 'UTL' FROM DUAL UNION ALL
  SELECT 1, 'UTLTNE' FROM DUAL;

Truy vấn :

SELECT ( SELECT LISTAGG( COLUMN_VALUE, ',' )
                  WITHIN GROUP ( ORDER BY COLUMN_VALUE )
         FROM   TABLE( ColA ) ) AS ColA,
       ( SELECT LISTAGG( COLUMN_VALUE, ',' )
                  WITHIN GROUP ( ORDER BY COLUMN_VALUE )
         FROM   TABLE( ColB ) ) AS ColB  
FROM   (
  SELECT SET( CAST( COLLECT( ColA ORDER BY ColA ) AS INTLIST ) ) ColA,
         SET( CAST( COLLECT( ColB ORDER BY ColB ) AS STRINGLIST ) ) ColB
  FROM   table_name
);

Đầu ra :

ColA ColB
---- ---------------------------------------
1,2  POW,POWPRO,PRO,PROUTL,TNEUTL,UTL,UTLTNE


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL / SQL kích thước tối đa của VARRAY

  2. Oracle tương đương với SQL Server DATEPART

  3. Làm cách nào để chỉ định thời gian chờ @lock trong truy vấn jpa dữ liệu mùa xuân?

  4. Cách cài đặt cx_Oracle trên El Capitan

  5. Tăng VOTE diskgroup trong ASM để nâng cấp GI 12.2