Просто сохраните первые 32 бита или 64 бита хеша MD5. Конечно, он аннулирует основное свойство md5 (= вероятность столкновения бесконечно мала), но вы все равно получите широкий разброс значений, который, вероятно, достаточно хорош для вашей задачи.
Функции SQL, полученные из других ответов:
Для бигинта:
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),1,8))::bit(32)::int;
$$ language sql;