PostgreSqlにてencode関数を利用したいのに、encode(text, unknown) does not exist とかになっちゃう件


下記テーブルを例にして記載します。

create table sampletable (
    name  text,
    birthday date
);

下記に様にすると取れそうですがエラーが発生します。

SELECT name, birthday, 
ENCODE( CONCAT( '{"name":"', name, '","birthday":"', CAST(birthday AS varchar), '"}'), 'base64') AS jsondata
FROM sampletable;
// 下記エラーが発生する
function encode(text, unknown) does not exist

バイナリ型に変換する必要があり、「::bytea」を付ける必要があります。

SELECT name, birthday, 
ENCODE( CONCAT( '{"name":"', name, '","birthday":"', CAST(birthday AS varchar), '"}')::bytea , 'base64') AS jsondata
FROM sampletable;

これで勝つる!

参考にしたサイト
PostgreSQLのテキスト型にBASE64文字列を入れて使うなら便利なこと | Exfield