加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

database – postgresql:md5消息摘要的数据类型?

发布时间:2020-12-13 16:18:21 所属栏目:百科 来源:网络整理
导读:我想使用某些字符串的MD5消息摘要作为表的主键.我应该为这样的字段使用什么数据类型?我应该为该字段写什么选择和插入语句? 作为bytea的md5散列将仅使用16个字节而不是32个用于hexa表示: create table t (d bytea);insert into t (d) values (digest('my_s
我想使用某些字符串的MD5消息摘要作为表的主键.我应该为这样的字段使用什么数据类型?我应该为该字段写什么选择和插入语句?
作为bytea的md5散列将仅使用16个字节而不是32个用于hexa表示:
create table t (d bytea);
insert into t (d) values
    (digest('my_string','md5')),(decode(md5('my_string'),'hex'));

上面的两种形式都可以使用,但是要使用更简单的摘要功能,必须以超级用户身份安装pgcrypto扩展:

create extension pgcrypto;

使用摘要函数或解码和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值是存储大小.与hexa表示相比,bytea小于一半.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读