sql >> Databáze >  >> RDS >> PostgreSQL

Vložení textového řetězce s hexem do PostgreSQL jako bajt

Hexadecimální řetězec můžete převést na bajt pomocí decode funkce (kde "kódování" znamená kódování binární hodnoty na nějakou textovou hodnotu). Například:

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

což je srozumitelnější s výchozím výstupem 9.0:

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

Důvod, proč nemůžete jednoduše říct E'\xDE\xAD\xBE\xEF' je, že toto je určeno k vytvoření textové hodnoty, nikoli bajtu, takže Postgresql se ji pokusí převést z kódování klienta do kódování databáze. Dalo by se napsat bajtový escape formát takto, ale musíte zdvojnásobit zpětná lomítka:E'\\336\\255\\276\\357'::bytea . Myslím, že vidíte, proč se formát bytea mění... IMHO decode() funkce je rozumný způsob zápisu vstupů, i když s tím souvisí určitá režie.



  1. Jak získat aktuální datum v PostgreSQL

  2. Jaké jsou výhody a nevýhody provádění výpočtů v SQL vs. ve vaší aplikaci

  3. Nejlepší způsob, jak hostovat MySQL v Azure Cloud

  4. Změnit limit pro velikost řádku Mysql je příliš velká