sql >> Base de Datos >  >> RDS >> PostgreSQL

Insertar cadena de texto con hexadecimal en PostgreSQL como bytea

Puede convertir una cadena hexadecimal a bytea usando decode función (donde "codificación" significa codificar un valor binario a algún valor textual). Por ejemplo:

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

que es más comprensible con la salida predeterminada de 9.0:

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

La razón por la que no puedes simplemente decir E'\xDE\xAD\xBE\xEF' es que esto tiene la intención de hacer un valor de texto, no un byte, por lo que Postgresql intentará convertirlo de la codificación del cliente a la codificación de la base de datos. Podría escribir el formato de escape bytea así, pero necesita duplicar las barras invertidas:E'\\336\\255\\276\\357'::bytea . Creo que puedes ver por qué se cambia el formato de bytea... En mi humilde opinión, el decode() La función es una forma razonable de escribir entradas, aunque implica algunos gastos generales.