2017-02-21 64 views
0

我使用PostgreSQL 9 我運行一個查詢爲Base64解碼值並打印其結果:無法串聯一個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:

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

上面給我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

** SELECT t.data,convert_from(decode(t.data.promo_code :: text ||'=','base64'),'utf-8') FROM table t; **給我意想不到的錯誤「=」。我認爲t.data值的長度是不同的行導致的錯誤。 – sireesha

+0

對不起 - 兩個'=' - > t.data::text || '==' –

+0

謝謝你,羅馬,這個問題部分由你的建議解決,但是真的,我有一些記錄中包含的錯誤字符少。 – sireesha