Autor Téma: Firebird 2,5 funkce HASH()  (Přečteno 339 krát)

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 435
  • Karma: 9
    • Verze Delphi: XE2
Firebird 2,5 funkce HASH()
« kdy: 05-03-2021, 16:56:40 »
Nevíte jaký hashovací  algoritmus použivá Firebird  - jde mi o to abych  kontrolu na duplicitu vykonal před vlastním uložením dalšího záznamu

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1558
  • Karma: 37
    • Pepak.net
Re:Firebird 2,5 funkce HASH()
« Odpověď #1 kdy: 05-03-2021, 20:43:00 »
Vzhledem k tomu, že návratová hodnota je typu BIGINT, to nic moc skvělého nebude.

Na http://tracker.firebirdsql.org/browse/CORE-4436 jde najít odhadnutý algoritmus výpočtu:

Citace
-  Reverse the string
 - Consider the first position p = 1
 - For each char, shift it's ASCII code to the left by 4 * (p - 1) bits and add up with the previous
 - The resulting sum is the hash

Pokud je to pravda, tak to bych teda určitě pro kontrolu duplicit nepoužíval.