Hi! -----Original Message----- From: Tom Lane [mailto:tgl@xxxxxxxxxxxxx] > Possibly a binary cast (WITHOUT FUNCTION) would solve your problem, > though I doubt it will work well on bytea values containing \0. Thanks, I've been a bit thick here, but I just found the solution to my problem - and that doesn't need this awkward function nor any type of extra WITHOUT FUNCTION casts - just decode and encode, alas in exactly the opposite order than I originally expected. mypgdb=# select decode('Tübingen'::text,'escape'); decode ----------------- T\303\274bingen (1 row) mypgdbe=# select encode('T\303\274bingen','escape'); encode ---------- Tübingen (1 row) I think this should be safe for any kind of bytea value. Kind regards Markus ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match