sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL :sorter række med afgrænset streng

Du kan bruge REGEXP_SUBSTR til at trække de individuelle numre ud fra hver række, og derefter bruge LISTAGG til at forbinde dem igen i den ønskede rækkefølge - noget som nedenstående:

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. Henter række før og efter en forespørgsel

  2. Tilslutning af PHP på Linux til Microsoft Access på en Windows Share

  3. Få totalen af ​​et felt grupperet efter dato og et andet felt

  4. masseindsæt fra Java til Oracle