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

Oracle SQL:sắp xếp hàng với chuỗi phân cách

Bạn có thể sử dụng REGEXP_SUBSTR để lấy ra các số riêng lẻ từ mỗi hàng, sau đó sử dụng LISTAGG để nối lại chúng theo thứ tự mong muốn - giống như sau:

WITH 
  T (N) AS --TEST DATA
    (SELECT '31132,11100,44232' FROM DUAL
    UNION
    SELECT '25464,89453,15686' FROM DUAL
    UNION
    SELECT '21561,68547,51612' FROM DUAL),
  T1 (N1) AS --USE THIS BELOW TO SEPARATE OUT FIRST/SECOND/THIRD VALUE FROM EACH ROW
    (SELECT 1 FROM DUAL UNION SELECT 2 FROM DUAL UNION SELECT 3 FROM DUAL),
  SEPARATED (RN,N) AS 
    (SELECT RN,REGEXP_SUBSTR(N,'[^,]+',1,T1.N1) N FROM --GET THE VALUES FROM EACH ROW WITH AN ACCOMPANYING ROW NUMBER SO WE CAN REGROUP THEM BELOW
      (SELECT ROW_NUMBER() OVER(ORDER BY 1) RN ,N FROM T),T1)
SELECT LISTAGG(N,',') WITHIN GROUP (ORDER BY N) FROM SEPARATED GROUP BY RN; --USE LISTAGG TO REJOIN THE SEPARATED VALUES IN THE DESIRED ORDER



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sửa đổi hàm PLSQL để trả về nhiều hàng từ cùng một cột

  2. Làm thế nào để Chọn một chuỗi con trong Oracle SQL cho đến một ký tự cụ thể?

  3. Một bảng vẫn tồn tại khi bị rơi

  4. PL / SQL và tập lệnh SQL trong một sqlFile với liquibase?

  5. Oracle:DBMS_UTILITY.EXEC_DDL_STATEMENT so với EXECUTE NGAY LẬP TỨC