sql >> データベース >  >> RDS >> Oracle

OracleでREGEXP_REPLACEを使用したCSV値の区別

    Oracleのコレクションを使用できます。 CAST() COLLECT()とペアになっています 値をユーザー定義のコレクションに集約してから、SET() 重複を取り除きます。次に、LISTAGG()を使用できます コレクションを文字列に変換します。

    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;
    

    クエリ

    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
    );
    

    出力

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


    1. 3つのテーブルを持つPostgreSQLからXMLへ

    2. Pythonパンダto_sql'追加'

    3. aioMySQLがPythonに接続していません

    4. javascriptからmysqlデータベースにデータを送信します