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

postgresql:kiểu dữ liệu cho thông báo md5?

Hàm băm md5 dưới dạng bytea sẽ chỉ sử dụng 16 byte thay vì 32 cho biểu diễn hexa:

create table t (d bytea);
insert into t (d) values
    (digest('my_string', 'md5')),
    (decode(md5('my_string'), 'hex'));

Cả hai biểu mẫu trên sẽ hoạt động nhưng để sử dụng digest đơn giản hơn chức năng cần thiết để cài đặt pgcrypto tiện ích mở rộng như superuser:

create extension pgcrypto;

Sử dụng digest chức năng hoặc sự kết hợp của decodemd5 như trên để tìm kiếm một chuỗi nhất định:

select
    octet_length(d) ba_length,
    pg_column_size(d) ba_column,
    encode(d, 'hex') hex_representation,
    octet_length(encode(d, 'hex')) h_length,
    pg_column_size(encode(d, 'hex')) h_column
from t
where d = digest('my_string', 'md5')
;
 ba_length | ba_column |        hex_representation        | h_length | h_column 
-----------+-----------+----------------------------------+----------+----------
        16 |        17 | 3d212b21fad7bed63c1fb560c6a5c5d0 |       32 |       36
        16 |        17 | 3d212b21fad7bed63c1fb560c6a5c5d0 |       32 |       36

pg_column_size giá trị là kích thước lưu trữ. Nó chưa bằng một nửa đối với bytea so với biểu diễn hexa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL Upsert phân biệt các hàng được chèn và cập nhật bằng cách sử dụng các cột hệ thống XMIN, XMAX và các cột khác

  2. Tổng hợp một cột duy nhất trong truy vấn với nhiều cột

  3. PostgreSQL, kéo và hoán đổi

  4. Tối ưu hóa truy vấn trong PostgreSQL. GIẢI THÍCH Khái niệm cơ bản - Phần 2

  5. Lỗi cú pháp tại hoặc gần người dùng khi thêm ràng buộc Postgres