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

Oracle SQLクエリを使用して、列のカンマ区切り値を行に分割します

    複数のオプションがあります。 Oracleのテーブルでカンマ区切り文字列を分割するを参照してください。 。

    REGEXP_SUBSTRの使用:

    SQL> WITH sample_data AS(
      2  SELECT 10001 ID, 'A,B,C' str FROM dual UNION ALL
      3  SELECT 10002 ID, 'D,E,F' str FROM dual UNION ALL
      4  SELECT 10003 ID, 'C,E,G' str FROM dual
      5  )
      6  -- end of sample_data mimicking real table
      7  SELECT distinct id, trim(regexp_substr(str, '[^,]+', 1, LEVEL)) str
      8  FROM sample_data
      9  CONNECT BY LEVEL <= regexp_count(str, ',')+1
     10  ORDER BY ID
     11  /
    
            ID STR
    ---------- -----
         10001 A
         10001 B
         10001 C
         10002 D
         10002 E
         10002 F
         10003 C
         10003 E
         10003 G
    
    9 rows selected.
    
    SQL>
    

    XMLTABLEの使用:

    SQL> WITH sample_data AS(
      2  SELECT 10001 ID, 'A,B,C' str FROM dual UNION ALL
      3  SELECT 10002 ID, 'D,E,F' str FROM dual UNION ALL
      4  SELECT 10003 ID, 'C,E,G' str FROM dual
      5  )
      6  -- end of sample_data mimicking real table
      7  SELECT id,
      8        trim(COLUMN_VALUE) str
      9  FROM sample_data,
     10       xmltable(('"'
     11          || REPLACE(str, ',', '","')
     12          || '"'))
     13  /
    
            ID STR
    ---------- ---
         10001 A
         10001 B
         10001 C
         10002 D
         10002 E
         10002 F
         10003 C
         10003 E
         10003 G
    
    9 rows selected.
    


    1. データベーストリガーが再発しないようにするにはどうすればよいですか?

    2. MySQLストアドプロシージャはそれらを使用するか使用しないか

    3. Oracleにタイムスタンプを挿入する方法は?

    4. インド、PHP、MYSQL、JQUERYのSTDコードファインダースクリプト