sql >> Database teknologi >  >> RDS >> Oracle

Særskilt af CSV-værdier ved hjælp af REGEXP_REPLACE i oracle

Du kan bruge Oracles-samlinger. CAST() parret med COLLECT() kan samle værdier til en brugerdefineret samling og derefter SET() vil slippe af med dubletterne. Så kan du bruge LISTAGG() for at konvertere samlingen til en streng.

Oracle-opsætning :

CREATE TYPE intlist IS TABLE OF INT;/CREATE TYPE stringlist IS TABLE OF VARCHAR2(4000);/CREATE TABLE tabelnavn ( ColA NUMBER(5,0), ColB VARCHAR2(20) );INSERT INTO table_name SELECT 1, 'POW' FRA DUAL UNION ALLE VÆLG 2, 'POW' FRA DUAL UNION ALLE VÆLG 1, 'POWPRO' FRA DUAL UNION ALLE VÆLG 1, 'PRO' FRA DUAL UNION ALLE VÆLG 2, 'PRO' FRA DUAL UNION ALLE VÆLG 1, 'PROUTL' FRA DUAL UNION ALLE VÆLG 1, 'TNEUTL' FRA DUAL UNION ALLE VÆLG 1, 'UTL' FRA DUAL UNION ALLE VÆLG 1, 'UTLTNE' FRA DUAL; 

Forespørgsel :

VÆLG ( VÆLG LISTAGG( COLUMN_VALUE, ',' ) INDEN FOR GRUPPE ( ORDER BY COLUMN_VALUE ) FROM TABLE( ColA ) ) AS ColA, ( SELECT LISTAGG( COLUMN_VALUE, ',' ) INDEN FOR GRUPPE (ORDER BY COLUMN_VALUE) FRA 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); 

Output :

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

  1. Sådan opretter du et sikkert login-script i PHP og MySQL

  2. MySQL's small_case_table_names vil ikke ændre sig

  3. Returner kun numeriske værdier i MariaDB

  4. Postgres VÆLG hvor WHERE er UUID eller streng