É possível descobrir se uma palavra possui acentos usando uma expressão regular.
-- "Tarcísio" possui caracteres diferentes de [a-z 0-9]? select 'Tarcísio' !~* '^([a-z 0-9])*$' Retorna verdadeiro. A palavra possui um "i" com acento. Comecei com uma função usando o translate como foi passado na lista só que antes de retornar a string, passo pela ER que verifica o resultado. Se o retorno for "true" gero uma exception. Descubro manualmente o caracter que causou a falha e assim posso ajustar a função para transformar este novo caracter. CREATE OR REPLACE FUNCTION padroniza(palavra text) RETURNS text AS $_$ DECLARE _palavra text; BEGIN _palavra = translate(palavra, 'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ"!...@#$%¨&*()-_=+´`{[^~}]|¹²³£¢¬ªº°<>:?,.;/', 'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC'); IF _palavra !~* '^([a-z 0-9])*$' THEN RAISE EXCEPTION 'a palavra "%" possui caracteres estranhos', _palavra; END IF; RETURN _palavra; END; $_$ LANGUAGE 'plpgsql' IMMUTABLE; -- Tarcisio F. Sassara _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral