sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:asigne un valor entero a una cadena en una declaración de caso

Esto producirá un número "único" para cada valor:

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

Estrictamente hablando, existe la posibilidad de una colisión, pero es muy remota.

Si el resultado es "demasiado grande", puede probar el módulo:

<above-calculation> % 10000

Aunque las colisiones tendrían entonces una probabilidad del 0,01 %, debe probar esta fórmula con todos los valores conocidos para asegurarse de que no haya colisiones.