Cela produira un numéro "unique" pour chaque valeur :
('x'||substr(md5("PQ"."Value"),1,8))::bit(64)::bigint
Strictement parlant, il y a un risque de collision, mais c'est très rare.
Si le résultat est "trop grand", vous pouvez essayer modulus :
<above-calculation> % 10000
Bien que les collisions aient alors 0,01 % de chance, vous devriez essayer cette formule avec toutes les valeurs connues pour vous assurer qu'il n'y a pas de collisions.