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

SQL - Chia một cột thành nhiều cột

Phụ thuộc vào tính nhất quán của dữ liệu - giả sử một khoảng trắng là dấu phân cách giữa những gì bạn muốn xuất hiện trong cột một so với hai:

WITH TEST_DATA AS
  (SELECT 'LOREM IPSUM' COLUMN_A FROM DUAL)

SELECT SUBSTR(t.COLUMN_A, 1, INSTR(t.COLUMN_A, ' ')-1) AS COLUMN_A,
       SUBSTR(t.COLUMN_A, INSTR(t.COLUMN_A, ' ')+1) AS COLUMN_B
FROM test_data T;

Bạn cũng có thể sử dụng truy vấn bên dưới với REGEX:

WITH TEST_DATA AS
   (SELECT 'LOREM IPSUM' COLUMN_A FROM DUAL)

SELECT REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 1) COLUMN_A,
       REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 2) COLUMN_B
FROM test_data T;

Oracle 10g + có hỗ trợ regex, cho phép linh hoạt hơn tùy thuộc vào tình huống bạn cần giải quyết. Nó cũng có một phương thức chuỗi con regex ...

CHỈNH SỬA: 3 TỪ VỰNG:

WITH TEST_DATA AS
  (SELECT 'LOREM IPSUM DIMSUM' COLUMN_A FROM DUAL)

 SELECT REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 1) COLUMN_A,
     REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 2) COLUMN_B,
     REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 2, 3) COLUMN_C
 FROM test_data T;

Tham khảo:



  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 mới / Cập nhật màn hình biểu mẫu trong Oracle D2k Forms 6i

  2. Oracle SQL:dấu thời gian trong mệnh đề where

  3. Tại sao CONNECT BY LEVEL trên bảng trả về các hàng thừa?

  4. Kết quả chuyển đổi ngày trong SQL thành tham số mô hình định dạng số không hợp lệ.

  5. Tạo bộ hẹn giờ trong Oracle Forms / Forms 6i và hiển thị đồng hồ