PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wstawianie ciągu tekstowego z szesnastką do PostgreSQL jako bajt

Możesz przekonwertować ciąg szesnastkowy na bajty za pomocą decode funkcja (gdzie "kodowanie" oznacza kodowanie wartości binarnej do jakiejś wartości tekstowej). Na przykład:

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

co jest bardziej zrozumiałe przy domyślnym wyjściu 9.0:

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

Powód, dla którego nie możesz po prostu powiedzieć E'\xDE\xAD\xBE\xEF' jest to, że ma to na celu utworzenie wartości tekstowej, a nie bajta, więc Postgresql spróbuje przekonwertować go z kodowania klienta na kodowanie bazy danych. Możesz napisać bajtowy format ucieczki w ten sposób, ale musisz podwoić ukośniki odwrotne:E'\\336\\255\\276\\357'::bytea . Myślę, że możesz zobaczyć, dlaczego format bajtów jest zmieniany .... IMHO decode() funkcja jest rozsądnym sposobem pisania danych wejściowych, nawet jeśli wiąże się to z pewnym obciążeniem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zdekodować dzienniki błędów PostgreSQL

  2. Jak uwzględnić wykluczone wiersze w RETURNING z INSERT ... ON CONFLICT

  3. PostgreSQL 13:Nie pozwól, aby sloty zabiły twój podstawowy

  4. Jak wykonać kopię zapasową i przywrócić bazę danych PostgreSQL

  5. Rzucanie typu NULL podczas aktualizowania wielu wierszy