PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL - Weisen Sie der Zeichenfolge in der Case-Anweisung einen ganzzahligen Wert zu

Dadurch wird für jeden Wert eine "eindeutige" Nummer erzeugt:

('x'||substr(md5("PQ"."Value"),1,8))::bit(64)::bigint

Genau genommen besteht die Möglichkeit einer Kollision, aber sie ist sehr unwahrscheinlich.

Wenn das Ergebnis "zu groß" ist, könnten Sie es mit modulus:

versuchen
<above-calculation> % 10000

Obwohl Kollisionen dann eine Wahrscheinlichkeit von 0,01 % haben, sollten Sie diese Formel mit allen bekannten Werten ausprobieren, um sicherzustellen, dass es keine Kollisionen gibt.