Write query to convert string in ascending order

Input: ORACLE

Output: ACELOR

This example shows how to split a string into characters and then reorder them using CONNECT BY and LISTAGG.

STEP 1

WITH d AS (
  SELECT 'ORACLE' c FROM dual
)
SELECT c
FROM d
CONNECT BY LEVEL <= LENGTH(c);

Output:

ORACLE
ORACLE
ORACLE
ORACLE
ORACLE
ORACLE

STEP 2

WITH d AS (
  SELECT 'ORACLE' c FROM dual
)
SELECT SUBSTR(c, LEVEL, 1) e
FROM d
CONNECT BY LEVEL <= LENGTH(c);

Output:

O
R
A
C
L
E

STEP 3

WITH d AS (
  SELECT 'ORACLE' c FROM dual
)
SELECT LISTAGG(e, '') WITHIN GROUP (ORDER BY e ASC) col
FROM (
  SELECT SUBSTR(c, LEVEL, 1) e
  FROM d
  CONNECT BY LEVEL <= LENGTH(c)
);

Output:

ACELOR

No comments:

Post a Comment