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

在PostgreSQL中将字符串散列为数值,第1张

概述我需要将存储在我的数据库中的字符串转换为数字值。结果可以是Integer(首选)或Bigint。此转换将在PL / pgSQL函数的数据库端完成。 有人可以指点一些算法或任何可用于实现此目的的API吗? 我一直在Google上搜索这几个小时,到目前为止找不到任何有用的东西:( 只需保留MD5哈希的前32位或64位。当然,它会使md5的主要特性(=碰撞概率无穷小)无效,但你仍然会得到一个广泛的价值分 我需要将存储在我的数据库中的字符串转换为数字值。结果可以是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,16))::bit(64)::bigint;$$ language sql;

对于int:

create function h_int(text) returns int as $$ select ('x'||substr(md5(),8))::bit(32)::int;$$ language sql;
总结

以上是内存溢出为你收集整理的在PostgreSQL中将字符串散列为数值全部内容,希望文章能够帮你解决在PostgreSQL中将字符串散列为数值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1170607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存