Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Uint64: wie in MSSQL abbilden?

Yves3 / 10 Antworten / Flachansicht Nickles

Hallo

Was für einen Datentypen muss ich wählen um einen Wert vom Typ uint64 in einer MSSQL Datenbank zu speichern?
Bigint ist 8 Byte (also 64 bit) gross, damit können aber auch negative Zahlen abgebildet werden, es wird also kaum reichen.

Ich tippe auf numeric(20, 0). Wenn ich das richtig verstanden habe beinhaltet dieser Typ 20 Stellen, von denen 0 nach dem Komma sind.
Die höchstmögliche Zahl, die sich mit uint64 darstellen lässt sollte eigentlich 18446744073709551616 sein, hätte also in den 20 Stellen vor dem Komma platz. Allerdings ist dieser Typ grösser als nötig, da er auch negative Zahlen abbilden kann.

Was meint ihr, welcher Typ ist der beste?

bei Antwort benachrichtigen
Yves3 Nachtrag zu: „Uint64: wie in MSSQL abbilden?“
Optionen

Ich habe noch einige Fragen zum Datentyp Varchar und stelle die mal in diesem Thread.
Der MSDN Artikel dazu konnte mir leider nicht weiterhelfen.

1. Ist die Zahl, die man in Klammern angibt, die Grösse in Byte oder in Zeichen, oder ist das sogar das gleiche? Ich nehme an es sind Zeichen gemeint, wenn von "length" gesprochen wird...

2. Der benötigte Speicherplatz wird mit Datengrösse + 2 Byte berechnet. Wenn diese maximale Grösse beispielsweise 128 Zeichen beträgt, tatsächlich aber nur 28 verwendet werden, dann benötigt es auch nur den Speicherplatz von 28 Zeichen + 2 Byte. Ist das soweit richtig? Falls ja, wieso gibt man dann nicht immer die maximalen 8000 an? Sollte man also nur dann weniger Zeichen angeben, wenn man genau weiss, dass es definitiv (und nicht nur zu einer 99.9999 prozentigen Wahrscheinlichkeit) nicht mehr sein können?

EDIT: Hmm ich glaube mir ist gerade eine mögliche Antwort auf Frage 2 eingefallen. Das ist beispielsweise eine Möglichkeit um das Programm, das die Daten aus der DB bezieht, vor Puffer Überläufen zu schützen. Obwohl es vielleicht kluger währe, solche Probleme im Programmcode abzufangen...

bei Antwort benachrichtigen