Random password generation via SQL


SELECT password
FROM (
    SELECT
        DBMS_RANDOM.STRING('a', 1) ||
        LISTAGG(ch, '') WITHIN GROUP (ORDER BY rnd) AS password
    FROM (
        SELECT DBMS_RANDOM.STRING('l', 1) ch, DBMS_RANDOM.VALUE rnd FROM dual
        UNION ALL
        SELECT DBMS_RANDOM.STRING('l', 1), DBMS_RANDOM.VALUE FROM dual
        UNION ALL
        SELECT TO_CHAR(TRUNC(DBMS_RANDOM.VALUE(0, 10))), DBMS_RANDOM.VALUE FROM dual
        UNION ALL
        SELECT TO_CHAR(TRUNC(DBMS_RANDOM.VALUE(0, 10))), DBMS_RANDOM.VALUE FROM dual
        UNION ALL
        SELECT SUBSTR('#$%&*+-_', TRUNC(DBMS_RANDOM.VALUE(1, 9)), 1), DBMS_RANDOM.VALUE FROM dual
        UNION ALL
        SELECT SUBSTR('#$%&*+-_', TRUNC(DBMS_RANDOM.VALUE(1, 9)), 1), DBMS_RANDOM.VALUE FROM dual
        UNION ALL
        SELECT DBMS_RANDOM.STRING('a', 9), DBMS_RANDOM.VALUE FROM dual
    )
)
WHERE NOT REGEXP_LIKE(password, '(.)\1\1')
FETCH FIRST 1 ROW ONLY;