PostgreSQLでbytea型とtext型の変換

ここ数日、PostgreSQLの暗号化関数 encrypt/decrypt を扱っているのですがbytea型(バイナリーデータ)とtext型(文字列)で困っていました。

decrypt関数は Java風に書くと bytea decrypt(bytea encryptedData, text key) のような定義になっています。もともと暗号化したデータは文字列なのですが、復号したデータはバイナリーになってしまい、型にうるさいPostgreSQL(SQL?)では、場合によってエラーになってしまいます。
PostgreSQLには Cast という機能があり CAST('abc' AS bytea) のように定数はキャストできるのですが CAST(decrypt(.....) AS text) はエラーになってしまいます ^^;
今朝ドキュメントを眺めていたら、bytea と text の変換関数の変換方式として base64, hex の他に escape というのがある事を発見しました!

escape は想像通りの動きをするので、encode(decrypt(....), 'escape') で無事にtext型のデータが得られました!