sql >> Database >  >> RDS >> Oracle

Sorteer tekens in varchar2 alfabetisch

Uit een antwoord op http://forums.oracle.com/forums/thread .jspa?messageID=1791550 dit zou kunnen werken, maar heb geen 10g om op te testen...

SELECT MIN(permutations)
FROM (SELECT REPLACE (SYS_CONNECT_BY_PATH (n, ','), ',') permutations
    FROM (SELECT LEVEL l, SUBSTR ('&col', LEVEL, 1) n
        FROM DUAL
        CONNECT BY LEVEL <= LENGTH ('&col')) yourtable
    CONNECT BY NOCYCLE l != PRIOR l)
WHERE LENGTH (permutations) = LENGTH ('&col')

In het voorbeeld col is gedefinieerd in SQL*Plus, maar als je hier een functie van maakt, kun je het doorgeven, of het zou kunnen herwerken om direct een tabelkolom te nemen, veronderstel ik.

Ik zou dat eerder als uitgangspunt nemen dan als oplossing; de oorspronkelijke vraag ging over anagrammen, dus het is ontworpen om alle permutaties te vinden, dus iets soortgelijks maar vereenvoudigd zou mogelijk zijn. Ik vermoed dat dit niet erg goed schaalt voor grote waarden.



  1. JDBC-stuurprogramma niet beschikbaar voor 'org.postgresql.Driver' voor Spring Roo

  2. Hibernate 3.6.10 voert verwijdering niet trapsgewijs uit via OneToMany JoinTable

  3. Hoe volgende rijen groeperen (op basis van een criterium) en ze vervolgens tellen [MySQL]?

  4. Alternatief voor lead lag-functie in SQL Server 2008