PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inserindo string de texto com hexadecimal no PostgreSQL como um bytea


Você pode converter uma string hexadecimal em bytea usando o decode função (onde "codificação" significa codificar um valor binário para algum valor textual). Por exemplo:
select decode('DEADBEEF', 'hex');
      decode      
------------------
 \336\255\276\357

o que é mais compreensível com a saída padrão do 9.0:
   decode   
------------
 \xdeadbeef

O motivo pelo qual você não pode simplesmente dizer E'\xDE\xAD\xBE\xEF' é que isso se destina a criar um valor de texto, não um bytea, então o Postgresql tentará convertê-lo da codificação do cliente para a codificação do banco de dados. Você pode escrever o formato de escape bytea assim, mas precisa dobrar as barras invertidas:E'\\336\\255\\276\\357'::bytea . Eu acho que você pode ver porque o formato bytea está sendo alterado.... IMHO o decode() função é uma maneira razoável de escrever entradas, mesmo que haja alguma sobrecarga envolvida.