PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Вмъкване на текстов низ с шестнадесетичен в PostgreSQL като байт

Можете да конвертирате шестнадесетичен низ в байт, като използвате decode функция (където "кодиране" означава кодиране на двоична стойност към някаква текстова стойност). Например:

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

което е по-разбираемо с изхода по подразбиране на 9.0:

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

Причината, поради която не можете просто да кажете E'\xDE\xAD\xBE\xEF' е, че това е предназначено да направи текстова стойност, а не байт, така че Postgresql ще се опита да го преобразува от клиентското кодиране в кодирането на базата данни. Можете да напишете escape формат на bytea по този начин, но трябва да удвоите обратната наклонена черта:E'\\336\\255\\276\\357'::bytea . Мисля, че можете да видите защо форматът на bytea се променя.... IMHO decode() функцията е разумен начин за записване на входове, въпреки че има някои допълнителни разходи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете речника на Python с помощта на Psycopg2

  2. Кръстосана таблица с голям или неопределен брой категории

  3. Не може да стартира Postgres

  4. Как да се свържа с PostgreSQL, без да посоча име на база данни?

  5. Как да задам първичен ключ за автоматично увеличение в PostgreSQL?