sql >> Database >  >> RDS >> PostgreSQL

Tekststring met hex als bytea in PostgreSQL invoegen

U kunt een hexadecimale tekenreeks naar bytea converteren met behulp van de decode functie (waar "codering" betekent het coderen van een binaire waarde naar een tekstuele waarde). Bijvoorbeeld:

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

wat begrijpelijker is met de standaarduitvoer van 9.0:

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

De reden waarom je niet gewoon E'\xDE\xAD\xBE\xEF' kunt zeggen is dat dit bedoeld is om een ​​tekstwaarde te maken, niet een bytea, dus Postgresql zal proberen deze te converteren van de clientcodering naar de databasecodering. Je zou het bytea escape-formaat zo kunnen schrijven, maar je moet de backslashes verdubbelen:E'\\336\\255\\276\\357'::bytea . Ik denk dat je kunt zien waarom het bytea-formaat wordt gewijzigd.... IMHO de decode() functie is een redelijke manier om invoer te schrijven, ook al komt er wat overhead bij kijken.



  1. ADDDATE() Voorbeelden – MySQL

  2. Hoe gebruik je een tabeltype in een SELECT FROM-instructie?

  3. Hoe wordt de JDBC-querytime-out van Oracle geïmplementeerd?

  4. Een kolom toevoegen die een aaneenschakeling van twee andere Varchar-kolommen vertegenwoordigt