    SELECT
        f.id_titulo,
        REPLACE(
            TRIM(
                REPLACE(
                    GROUP_CONCAT(
                        CONCAT(
                            ct.caracter_antes,
                            CASE
                                WHEN tt.nome_tipo_token = 'sigla' THEN UPPER(t.acentuada)
                                WHEN tt.nome_tipo_token IN ('preposicao', 'conjuncao') THEN LOWER(t.acentuada)
                                ELSE CONCAT(
                                    UPPER(SUBSTRING(t.acentuada, 1, 1)),
                                    LOWER(SUBSTRING(t.acentuada, 2))
                                )
                            END,
                            ct.caracter_depois
                        )
                        ORDER BY ordem
                        SEPARATOR ''
                    ),
                    CONCAT(' ', CHAR(8)),
                    ''
                )
            ),
            '  ',
            ' '
        ) AS titulo
    FROM frases f
    JOIN tokens t ON f.id_token = t.id_chave_token
    JOIN classificacoes_tokens ct ON BINARY t.acentuada = ct.nome_token
    JOIN tipos_tokens tt ON ct.id_tipo_token = tt.id_chave_tipo_token
    GROUP BY f.id_titulo
;
