10
votes

Comment créer un nombre d'entiers uniques à partir de 3 numéros d'entiers différents (1 oracle longue, 1 champ de date, 1 court)

La chose est que le 1er numéro est déjà oracle long, Deuxième une date (SQL Date, aucune info horodatale supplémentaire), le dernier étant une valeur courte comprise entre 1000-100'000.
Comment créer une sorte de valeur de hachage qui sera unique pour chaque combinaison de manière optimale?

Concaténation de chaîne et convertir longtemps plus tard:
Je ne veux pas cela, par exemple.

mois de jour

12 1 -> 121
1 12 -> 121


0 commentaires

3 Réponses :


4
votes

Votre problème

00012 001 --> 00012001
00001 012 --> 00001012


1 commentaires

Bonjour Chris, le rembourrage zéro n'est pas recommandé, car les données d'entrée proviennent d'une API extérieure, sur lesquelles je n'ai aucun impact.I.e., S'ils changent d'une manière ou d'une autre, je serai coincé. Donc, il doit s'agir d'une solution générale .. Mieux que je puisse prédire, c'est de ne créer pas un nombre long, mais plutôt une chaîne concaténée par "_" ou "-". Cela résoudra mon problème d'identification unique.



16
votes

Lorsque vous avez quelques valeurs numériques et que vous devez disposer d'une seule "unique" (c'est-à-dire une dupliquée statistiquement improbable) en dehors d'eux, vous pouvez généralement utiliser une formule comme:

"BB".hashCode() == "Aa".hashCode() == 2122


0 commentaires

0
votes

Dans Python, vous pouvez utiliser ceci:

[12, 6, 20, 19]
477575
[(12, 6), (20, 19)]


0 commentaires