PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Inserimento di una stringa di testo con esadecimale in PostgreSQL come byte

Puoi convertire una stringa esadecimale in byte usando il decode funzione (dove "codifica" significa codificare un valore binario in un valore testuale). Ad esempio:

select decode('DEADBEEF', 'hex');
      decode      
------------------
 \336\255\276\357

che è più comprensibile con l'output predefinito di 9.0:

   decode   
------------
 \xdeadbeef

Il motivo per cui non puoi semplicemente dire E'\xDE\xAD\xBE\xEF' è che questo ha lo scopo di creare un valore di testo, non un byte, quindi Postgresql proverà a convertirlo dalla codifica del client alla codifica del database. Potresti scrivere il formato di escape bytea in questo modo, ma devi raddoppiare le barre rovesciate:E'\\336\\255\\276\\357'::bytea . Penso che tu possa capire perché il formato bytea viene cambiato.... IMHO il decode() La funzione è un modo ragionevole per scrivere input, anche se è coinvolto un sovraccarico.