Fórum Problema de converção de texto quando passo de bytea para varchar no postgres 9 #412580
09/02/2012
0
SELECT cast(CAST(AMÉRICA as bytea) as varchar(5000))
recebo o seguinte resultado:
preciso que o resultado seja o mesmo que foi passado! ou seja: AMÉRICA
Alguém sabe o porque de estar vindo com esta \311 no lugar do É e como mudar isso?
Km Sistemas
Curtir tópico
+ 0Post mais votado
19/03/2012
SELECT convert_from(CAST('AMÉRICA' as bytea), 'latin1')
Saulo Benvenutti
Gostei + 1
Mais Posts
10/02/2012
Jair N.
SELECT cast(CAST(AMÉRICA as bytea) as varchar(5000))
recebo o seguinte resultado:
preciso que o resultado seja o mesmo que foi passado! ou seja: AMÉRICA
Alguém sabe o porque de estar vindo com esta \311 no lugar do É e como mudar isso?
Gostei + 0
10/02/2012
Km Sistemas
Gostei + 0
10/02/2012
Km Sistemas
SELECT cast(CAST(AMÉRICA as bytea) as varchar(5000))
recebo o seguinte resultado:
preciso que o resultado seja o mesmo que foi passado! ou seja: AMÉRICA
Alguém sabe o porque de estar vindo com esta \311 no lugar do É e como mudar isso?
E como eu faria isso?
Pois preciso da palavra acentuada!
Gostei + 0
13/02/2012
Jair N.
Olhe a cadeia de caracteres: §ªºÀÁÂÃÄÇÈÉÊËÌÍÎïÒÓÔÕÖÙÚÛÜàáâãäçèéêëìíîïòóôõöùúûü sua codificação hex e base64
você vai ter que criar uma função para converter esse tido de dado, é trabalhoso...
SELECT cast(CAST(AMÉRICA as bytea) as varchar(5000))
recebo o seguinte resultado:
preciso que o resultado seja o mesmo que foi passado! ou seja: AMÉRICA
Alguém sabe o porque de estar vindo com esta \311 no lugar do É e como mudar isso?
E como eu faria isso?
Pois preciso da palavra acentuada!
Gostei + 0
13/02/2012
Jair N.
CREATE OR REPLACE FUNCTION ByteaToText(texto BYTEA) RETURNS TEXT AS
$BODY$
DECLARE
intRetorno INTEGER;
txtRetorno TEXT DEFAULT ;
aryvch_und_BIN VARCHAR[] := ARRAY[247,252,272,300,301,302,303,304,307,310,311,312,313,314,315,316,357,322,323,324,325,326,331,332,333,334,340,341,342,343,344,347,350,351,352,353,354,355,356,357,362,363,364,365,366,371,372,373,374];
aryvch_und_CHR VARCHAR[] := ARRAY[§,ª,º,À,Á,Â,Ã,Ä,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ò,Ó,Ô,Õ,Ö,Ù,Ú,Û,Ü,à,á,â,ã,ä,ç,è,é,ê,ë,ì,í,î,ï,ò,ó,ô,õ,ö,ù,ú,û,ü];
BEGIN
SELECT INTO txtRetorno REPLACE(CAST(texto AS VARCHAR),CHR(92),#);
FOR intRetorno IN 1..49
LOOP
txtRetorno := REPLACE(txtRetorno, #|| aryvch_und_BIN[intRetorno] ,aryvch_und_CHR[intRetorno]);
END LOOP;
RETURN TRIM(txtRetorno);
END;
$BODY$
LANGUAGE plpgsql VOLATILE
Ninguém trabalha porquê gosta, trabalho é o meio que utilizamos para realizar algo, originado de ideias ou desafios. [Klaus Hans]
Gostei + 0
30/07/2012
Km Sistemas
muito obrigado...
convert_from(campo_bytea,SQL_ASCII)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)