Sie können einen Hex-String mit decode
in Byte umwandeln -Funktion (wobei "Codierung" die Codierung eines Binärwerts in einen Textwert bedeutet). Zum Beispiel:
select decode('DEADBEEF', 'hex');
decode
------------------
\336\255\276\357
was mit der Standardausgabe von 9.0 verständlicher ist:
decode
------------
\xdeadbeef
Der Grund, warum Sie nicht einfach E'\xDE\xAD\xBE\xEF'
sagen können ist, dass dies dazu gedacht ist, einen Textwert und kein Bytea zu erstellen, sodass Postgresql versucht, ihn von der Client-Codierung in die Datenbank-Codierung zu konvertieren. Sie könnten das Bytea-Escape-Format so schreiben, aber Sie müssen die Backslashes verdoppeln:E'\\336\\255\\276\\357'::bytea
. Ich denke, Sie können sehen, warum das Bytea-Format geändert wird .... IMHO das decode()
-Funktion ist eine vernünftige Art, Eingaben zu schreiben, auch wenn damit etwas Overhead verbunden ist.