Database
Como criar uma função de dump do conteúdo de textos no PostgreSQL para localizar caracteres inválidos?
RT.DB.FAQ-45309
Existem situações onde caracteres invalidos no conteúdo de determinadas colunas pode causar problemas. Para verificar o conteúdo destes campos, pode-se criar a função de banco abaixo:
CREATE OR REPLACE FUNCTION dump(text char) RETURNS char AS $$
declare
v1 varchar;
v2 varchar;
first boolean := true;
BEGIN
v1 := '';
v2 := '';
for i in 1 .. length(text) loop
v1 := v1 || substr(text,i,1) || ' ';
v2 := v2 || to_hex(ascii(substr(text,i,1))) || ' ';
end loop;
RETURN v2 || chr(13) || v1;
END;
$$ LANGUAGE plpgsql;
Esta função retorna um texto em 2 linhas onde a primeira linha é composta pela sequencia de caracteres em hexadecimal e a segunda pelo conteúdo dos caracteres (alinhando com a de cima)
select dump(descricao)
from produtos
where id=133395;
Resultado:
52 45 46 52 45 53 43 4f 20 50 4f 50 20 46 52 55 54 41 20 41 42 41 43 41 58 49 20 31 36 30 58 33 30 47
R E F R E S C O P O P F R U T A A B A C A X I 1 6 0 X 3 0 G