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

postgresql:тип данни за md5 съобщение?

Хешът на md5 като bytea ще използва само 16 байта вместо 32 за хекса представянето:

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

И двете форми по-горе ще работят, но да се използва по-простият digest функция е необходимо да инсталирате pgcrypto разширение като суперпотребител:

create extension pgcrypto;

Използвайте digest функция или комбинацията от decode и md5 както по-горе, за да търсите определен низ:

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 стойността е размерът на съхранение. Това е по-малко от половината за bytea в сравнение с хекса представянето.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конфигурирате AppArmor за PostgreSQL и TimescaleDB

  2. Справяне с бавни заявки с PostgreSQL

  3. динамична sql заявка в postgres

  4. SELECT или PERFORM във функция PL/pgSQL

  5. Привилегии на PostgreSQL и управление на потребителите – какво трябва да знаете