PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Einfügen einer Textzeichenfolge mit Hex als Byte in PostgreSQL

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.