我需要将存储在我的数据库中的字符串转换为数值。结果可以是整数(首选)或Bigint。此转换将在PlPgsql存储过程的数据库端完成。
有人可以请我指出一些可以用来实现这一点的算法或API吗?
我已经在Google上搜索了几个小时,目前还没有找到任何有用的东西:(
只保留MD5哈希的前32位或64位。当然,它会使md5的主要属性(=碰撞的可能性是无穷小)失效,但是你仍然可以获得广泛的价值观,这对你的问题来说是足够好的。
对于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;