Frage

In welchen Fällen würden Sie welche verwenden? Gibt es einen großen Unterschied? Was ich normalerweise von Persistenzmotoren benutzt habe, um Booleane zu lagern?

War es hilfreich?

Lösung

Ein Tinyint ist ein 8-Bit-Ganzzahlwert, ein Bit-Feld kann zwischen 1 Bit, Bit (1) und 64 Bit (64) speichern. Für einen Booleschen Werte ist Bit (1) ziemlich häufig.

Andere Tipps

Aus Überblick über numerische Typen;

Bit [(m)

Ein Bitfeldtyp. M gibt die Anzahl der Bits pro Wert von 1 bis 64 an. Der Standard ist 1, wenn m weggelassen wird.

Dieser Datentyp wurde in MySQL 5.0.3 für MyISAM hinzugefügt und in 5.0.5 auf Speicher, InnoDB, BDB und NDBCLUSTER erweitert. Vor 5.0.3 ist Bit ein Synonym für Tinyint (1).

Tinyint [(m)] [nicht signiert] [ZeroFill

Eine sehr kleine Ganzzahl. Der signierte Bereich beträgt -128 bis 127. Der nicht signierte Bereich beträgt 0 bis 255.

Betrachten Sie dies zusätzlich;

Diese Typen sind Synonyme für Tinyint (1). Ein Wert von Null wird als falsch angesehen. Ungleich Nullwerte werden als wahr angesehen.

All diese theoretischen Diskussionen sind großartig, aber in Wirklichkeit ist es zumindest, wenn Sie MySQL verwenden und auch für SQLServer auch für Ihre Booleschen, aus dem einfachen Grund, mit dem es einfacher ist Die Daten geben Sie die Daten aus, abfragen und so weiter. Es ist besonders wichtig, wenn Sie versuchen, die Interoperabilität zwischen MySQL und SQLServer zu erreichen (dh Sie synchronisieren Daten zwischen den beiden), da sich die Handhabung des Bit -Datentyps in den beiden unterscheidet. In der Praxis haben Sie also viel weniger Probleme, wenn Sie sich an einen numerischen Datentyp halten. Ich würde MySQL empfehlen, mich bei Bool oder Boolean zu halten, der als Tinyint (1) gespeichert wird. Sogar die Art und Weise, wie MySQL Workbench und MySQL Administrator den Bit -Datentyp anzeigen, ist nicht schön (es ist ein kleines Symbol für binäre Daten). Seien Sie also praktisch und sparen Sie sich die Probleme (und leider spreche ich aus Erfahrung).

Bit sollte nur 0 und 1 zulassen (und null, wenn das Feld nicht als nicht null definiert ist). Tinyint (1) erlaubt einen Wert, der in einem einzigen Byte, -128..127 oder 0..255 gespeichert werden kann Verhindern Sie nicht, dass Sie einen größeren Wert speichern).

Für Versionen, die älter als 5,0,3 sind, wird Bit als Tinyint (1) interpretiert, also gibt es also nein Unterschied dort.

BIT hat ein Semantik "Dies ist ein boolescher", und einige Apps betrachten Tinyint (1) genauso (aufgrund der Art und Weise, wie MySQL sie behandelt hat), sodass Apps die Spalte als Kontrollkästchen formatieren können, wenn sie den Typ überprüfen und entscheiden Sie sich für ein darauf basierender Format.

Könnte falsch sein, aber:

Tinyint ist eine Ganzzahl zwischen 0 und 255

Bit ist entweder 1 oder 0

Deshalb ist ein bisschen die Wahl für Boolescheer

Aus meiner Erfahrung sage ich Ihnen, dass Bit Probleme unter Linux -Betriebssystemtypen hat (Ubuntu für Ex). Ich habe meine DB unter Windows entwickelt und nachdem ich alles unter Linux bereitgestellt hatte, hatte ich Probleme mit Abfragen, die aus Tabellen mit einem Bit -Datentyp eingefügt oder ausgewählt wurden.

Ein bisschen ist vorerst nicht sicher. Ich wechselte zu Tinyint (1) und arbeitete perfekt. Ich meine, dass Sie nur einen Wert benötigen, um zu unterschiedlich, wenn es 1 oder 0 und Tinyint (1) ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top