sql >> Databasteknik >  >> RDS >> PostgreSQL

Infogar textsträng med hex i PostgreSQL som en bytea

Du kan konvertera en hexadecimal sträng till bytea med decode funktion (där "kodning" betyder kodning av ett binärt värde till något textvärde). Till exempel:

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

vilket är mer förståeligt med 9.0:s standardutgång:

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

Anledningen till att du inte bara kan säga E'\xDE\xAD\xBE\xEF' är att detta är avsett att göra ett textvärde, inte en bytea, så Postgresql kommer att försöka konvertera det från klientkodningen till databaskodningen. Du kan skriva bytea escape-formatet så, men du måste dubbla snedstreck:E'\\336\\255\\276\\357'::bytea . Jag tror att du kan se varför byte-formatet ändras.... IMHO decode() funktion är ett rimligt sätt att skriva indata, även om det finns en del overhead.



  1. Hur man representerar Oracle Interval i Java

  2. Distribuera och hantera PostgreSQL 11:Nytt i ClusterControl 1.7.1

  3. Vet du när du ska försöka igen eller misslyckas när du anropar SQL Server från C#?

  4. Databaskorruption