2017-02-21 8 views
0

을 연결하고 그 결과를 인쇄 할 수 없습니다 :디코딩 값을 내가 PostgreSQL은 9 나는 64 기수에 쿼리를 실행하고 를 사용하여 오전 VARCHAR 및 ==

SELECT convert_from(decode(CONCAT('aWFuY3VkYXRlc3QrMTAwQGdtYWlsLmNvbQ','=='),'base64'),'utf-8'); 

하지만를, 나는 테이블에 걸쳐 동일한 쿼리를 실행할 때 내 쿼리의 버전 1 : 나는 오류를 얻을

:

SELECT t.data,convert_from(decode(CONCAT(t.data,'=='),'base64'),'utf-8') 
FROM table t; 

을 위의 나에게 내 쿼리의 ERROR: unexpected "=" 버전 2를 제공 538,

상기 날 ERROR: invalid byte sequence for encoding "UTF8": 0x8c

t.data 제공 내 테이블 t에서 데이터 유형 VARCHAR (255)이다.

이 문제를 해결하는 방법을 알 수 없습니다. base64 데이터를 디코딩하고 쿼리에서이를 인쇄하는 다른 방법이 있습니까?

+0

이 쿼리 문자열 주위에 따옴표 나 큰 따옴표를해야합니까? – Sean

+0

나는 따옴표를 전혀 사용하지 않습니다. 나는 그것이 t.data 가치의 길이와 관련이 있다고 생각한다. – sireesha

답변

0

그냥 대신 concat||를 사용 : 테이블의 경우

SELECT convert_from(decode('aWFuY3VkYXRlc3QrMTAwQGdtYWlsLmNvbQ' || '==','base64'),'utf-8'); 
     convert_from   
--------------------------- 
[email protected] 

을 :

SELECT t.data, 
     convert_from(decode(t.data::text || '==','base64'),'utf-8') 
FROM table t; 
+0

** t.data, convert_from (decode (t.data.promo_code :: text || '=', 'base64'), 'utf-8') FROM 테이블 t; **을 선택하면 예기치 않은 오류가 발생합니다. "=". 나는 t.data 값의 길이가 다른 행이 오류의 원인이라고 생각합니다. – sireesha

+0

죄송합니다 - two'='-> t.data::text || '==' –

+0

로마에 감사드립니다. 문제는 부분적으로 당신의 제안에 의해 해결되었지만 실제로는 오류를 던지는 문자가 적은 일부 기록이있었습니다. – sireesha