在PostgreSQL中将字符串散列为数值

前端之家收集整理的这篇文章主要介绍了在PostgreSQL中将字符串散列为数值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要将存储在我的数据库中的字符串转换为数字值。结果可以是Integer(首选)或Bigint。此转换将在PL / pgsql函数数据库端完成。

有人可以指点一些算法或任何可用于实现此目的的API吗?

我一直在Google上搜索这几个小时,到目前为止找不到任何有用的东西:(

只需保留MD5哈希的前32位或64位。当然,它会使md5的主要特性(=碰撞概率无穷小)无效,但你仍然会得到一个广泛的价值分散,这可能对你的问题来说已经足够了。

从其他答案派生的sql函数

对于bigint:

create function h_bigint(text) returns bigint as $$
 select ('x'||substr(md5($1),1,16))::bit(64)::bigint;
$$ language sql;

对于int:

create function h_int(text) returns int as $$
 select ('x'||substr(md5($1),8))::bit(32)::int;
$$ language sql;
原文链接:https://www.f2er.com/postgresql/192869.html

猜你在找的Postgre SQL相关文章