PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Utwórz dużą liczbę całkowitą z dużego końca identyfikatora uuid w PostgreSQL

Szybko i bez dynamicznego SQL

Rzuć pierwsze 16 cyfr szesnastkowych identyfikatora UUID w reprezentacji tekstowej jako bitstring bit(64) i prześlij to do bigint . Zobacz:

Dogodnie nadmiar cyfr szesnastkowych po prawej stronie jest obcięty w rzucie na bit(64) automatycznie - dokładnie to, czego potrzebujemy.

Postgres akceptuje różne formaty danych wejściowych. Twój podany literał ciągu jest jednym z nich:

14607158d3b14ac0b0d82a9a5a9e8f6e

Domyślna tekstowa reprezentacja UUID (i text dane wyjściowe w Postgresie dla typu danych uuid ) dodaje myślniki we wstępnie zdefiniowanych miejscach:

14607158-d3b1-4ac0-b0d8-2a9a5a9e8f6e

Podręcznik:

Jeśli format wejściowy może się różnić, najpierw usuń myślniki, aby się upewnić:

SELECT ('x' || translate(uuid_as_string, '-', ''))::bit(64)::bigint;

Przesyłaj rzeczywiste uuid wprowadź z uuid::text .

db<>fiddle tutaj

Pamiętaj, że Postgres używa znaku podpisanego liczba całkowita, więc bigint przepełnienia do liczb ujemnych w górnej połowie - co powinno być nieistotne w tym celu.

Projekt bazy danych

Jeśli to możliwe, dodaj bigserial kolumny do tabeli bazowej i użyj jej zamiast tego.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zapobiec zmienianiu przez PostgreSQL moich ładnie sformatowanych definicji SQL?

  2. Zapytanie pola logicznego z sqlalchemy

  3. PostgreSQL 10 w systemie Linux — LC_COLLATE locale en_US.utf-8 niepoprawne

  4. PostGIS, Czy możliwe jest utworzenie wielokąta z niektórych punktów

  5. Aktualizacja z funkcją wywoływaną raz dla każdego wiersza w Postgres 8.4