Anda dapat mengonversi string hex ke byte menggunakan decode
fungsi (di mana "pengkodean" berarti pengkodean nilai biner ke beberapa nilai tekstual). Misalnya:
select decode('DEADBEEF', 'hex');
decode
------------------
\336\255\276\357
yang lebih dapat dimengerti dengan keluaran default 9.0:
decode
------------
\xdeadbeef
Alasan Anda tidak bisa hanya mengatakan E'\xDE\xAD\xBE\xEF'
adalah bahwa ini dimaksudkan untuk membuat nilai teks, bukan byte, jadi Postgresql akan mencoba mengubahnya dari pengkodean klien ke pengkodean basis data. Anda dapat menulis format pelarian byte seperti itu, tetapi Anda perlu menggandakan garis miring terbalik:E'\\336\\255\\276\\357'::bytea
. Saya pikir Anda dapat melihat mengapa format byte diubah.... IMHO decode()
function adalah cara yang wajar untuk menulis input, meskipun ada beberapa overhead yang terlibat.