PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Chèn chuỗi văn bản có hex vào PostgreSQL dưới dạng bytea

Bạn có thể chuyển đổi một chuỗi hex thành bytea bằng cách sử dụng decode chức năng (trong đó "mã hóa" có nghĩa là mã hóa một giá trị nhị phân thành một giá trị văn bản nào đó). Ví dụ:

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

dễ hiểu hơn với đầu ra mặc định của 9.0:

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

Lý do bạn không thể chỉ nói E'\xDE\xAD\xBE\xEF' là điều này nhằm mục đích tạo ra một giá trị văn bản, không phải là một bytea, vì vậy Postgresql sẽ cố gắng chuyển đổi nó từ mã hóa máy khách sang mã hóa cơ sở dữ liệu. Bạn có thể viết định dạng thoát bytea như vậy, nhưng bạn cần phải nhân đôi dấu gạch chéo ngược:E'\\336\\255\\276\\357'::bytea . Tôi nghĩ bạn có thể hiểu tại sao định dạng bytea lại bị thay đổi .... IMHO the decode() hàm là một cách hợp lý để viết đầu vào, mặc dù có một số chi phí liên quan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật các hàng cơ sở dữ liệu mà không cần khóa bảng trong PostgreSQL 9.2

  2. Sử dụng jsonb_set () để cập nhật giá trị mảng jsonb cụ thể

  3. 2 cách trả về hàng chỉ chứa ký tự chữ và số trong PostgreSQL

  4. Truy vấn LIKE trên các phần tử của mảng jsonb phẳng

  5. loại bỏ các giá trị mảng trùng lặp trong postgres