2017-02-21 4 views
0

を連結することができません:値をデコードし、その結果を印刷し、私はBASE64にクエリを実行している私は、PostgreSQL 9 を使用しています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を与えます

上記は私に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を選択すると、予期しないエラーが発生しています(テーブル(t.data.promo_code :: text || '='、 'base64')、 'utf-8') "="。私はt.data値の長さが違う行がエラーを引き起こしていると思います。 – sireesha

+0

申し訳ありません--2つの '=' - > t.data::text || '==' –

+0

ローマに感謝します。問題はあなたの提案によって部分的に解決されましたが、実際にはエラーを投げかけている文字数の少ないレコードがありました。 – sireesha

関連する問題