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

Tách các giá trị được phân tách bằng dấu phẩy của một cột trong hàng, thông qua truy vấn SQL Oracle

Có nhiều lựa chọn. Xem Tách các chuỗi được phân tách bằng dấu phẩy trong bảng trong Oracle .

Sử dụng 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>

Sử dụng 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lấy số phần tử trong mảng JSON được lưu trữ dưới dạng CLOB với Oracle 12c?

  2. Làm cách nào để tìm các giá trị trùng lặp trong bảng trong Oracle?

  3. Oracle Concurrent Manager - Trình phân tích CP cho E-Business Suite

  4. Nhận CHIỀU DÀI CỦA NGUYÊN LIỆU DÀI

  5. Xóa các số 0 ở đầu khỏi nhà phát triển varchar sql