在PostgreSQL中将字符串散列为数值
发布时间:2020-12-13 16:35:19 所属栏目:百科 来源:网络整理
导读:我需要将存储在我的数据库中的字符串转换为数字值。结果可以是Integer(首选)或Bigint。此转换将在PL / pgSQL函数的数据库端完成。 有人可以指点一些算法或任何可用于实现此目的的API吗? 我一直在Google上搜索这几个小时,到目前为止找不到任何有用的东西:(
我需要将存储在我的数据库中的字符串转换为数字值。结果可以是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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |