Questo produrrà un numero "unico" per ogni valore:
('x'||substr(md5("PQ"."Value"),1,8))::bit(64)::bigint
A rigor di termini, c'è la possibilità di una collisione, ma è molto remota.
Se il risultato è "troppo grande", puoi provare modulus:
<above-calculation> % 10000
Anche se le collisioni avrebbero quindi una probabilità dello 0,01%, dovresti provare questa formula con tutti i valori noti per assicurarti che non ci siano collisioni.