Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle SQL:mengurutkan baris dengan string yang dibatasi

Anda dapat menggunakan REGEXP_SUBSTR untuk mengeluarkan nomor individual dari setiap baris, dan kemudian menggunakan LISTAGG untuk menggabungkannya kembali dalam urutan yang diinginkan -- seperti di bawah ini:

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. Ingin mengambil perbedaan dua kolom di Sql

  2. Pemicu untuk menampilkan pesan menggunakan PL/SQL

  3. Cari nilai dalam nilai kolom yang menyimpan nilai yang dipisahkan koma

  4. sql (Oracle) menghitung jumlah interval yang tumpang tindih

  5. Oracle 10g - Melarikan diri dari kutipan dalam pernyataan sisipan