Input: 4,10,6,1,8,46,52,12,18
Output: 1,4,6,8,10,12,18,46,52
This example shows how to split a comma-separated string, sort the values, and join them back using Oracle SQL.
STEP 1
SELECT '4,10,6,1,8,46,52,12,18' c FROM dual;
STEP 2
WITH d AS (
SELECT '4,10,6,1,8,46,52,12,18' c
FROM dual
)
SELECT c
FROM d
CONNECT BY LEVEL <= REGEXP_COUNT(c, ',') + 1;
Output:
4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18 4,10,6,1,8,46,52,12,18
STEP 3
WITH d AS (
SELECT '4,10,6,1,8,46,52,12,18' c
FROM dual
)
SELECT c, REGEXP_SUBSTR(c, '[^,]+', 1, LEVEL) e
FROM d
CONNECT BY LEVEL <= REGEXP_COUNT(c, ',') + 1;
Output:
4,10,6,1,8,46,52,12,18 4 4,10,6,1,8,46,52,12,18 10 4,10,6,1,8,46,52,12,18 6 4,10,6,1,8,46,52,12,18 1 4,10,6,1,8,46,52,12,18 8 4,10,6,1,8,46,52,12,18 46 4,10,6,1,8,46,52,12,18 52 4,10,6,1,8,46,52,12,18 12 4,10,6,1,8,46,52,12,18 18
STEP 4
WITH d AS (
SELECT '4,10,6,1,8,46,52,12,18' c
FROM dual
)
SELECT LISTAGG(e, ',') WITHIN GROUP (ORDER BY e) col
FROM (
SELECT c, REGEXP_SUBSTR(c, '[^,]+', 1, LEVEL) e
FROM d
CONNECT BY LEVEL <= REGEXP_COUNT(c, ',') + 1
);
Output:
1,10,12,18,4,46,52,6,8
STEP 5
WITH d AS (
SELECT '4,10,6,1,8,46,52,12,18' c
FROM dual
)
SELECT LISTAGG(e, ',') WITHIN GROUP (ORDER BY TO_NUMBER(e)) col
FROM (
SELECT c, REGEXP_SUBSTR(c, '[^,]+', 1, LEVEL) e
FROM d
CONNECT BY LEVEL <= REGEXP_COUNT(c, ',') + 1
);
Output:
1,4,6,8,10,12,18,46,52
No comments:
Post a Comment