2010-12-09 8 views
32

Ich wollte ein True/False-Feld für wenn ein Artikel auf Lager ist.MySQL Boolean "Tinyint (1)" hält Werte bis zu 127?

Ich wollte es auf Boolean setzen (was zu tinyint(1) konvertiert wird), 1 für auf Lager, 0 für nicht auf Lager.

Ich bekomme Feeds von Anbietern, also dachte ich mir: "Was ist, wenn sie passieren, wie viele sind instock?"

Also fragte ich mich, ob ich eine Nummer höher als 1 eingefügt hatte, was passieren würde. Ich nahm es auf 1

Zu meiner Überraschung Standard würde es mir erlauben wird, eine beliebige Anzahl zu halten, bis 127, etwas über Standardwerte bis zu 127

Kann mir jemand erklären, warum?

Antwort

52

Die signierte TINYINT Datentyp kann ganzzahlige Werte zwischen -128 und speichern 127.

Allerdings ist TINYINT(1) nicht die minimalen oder maximalen Wert ändern es speichern kann. Es sagt nur Anzeige nur eine Ziffer, wenn Werte dieses Typs als Ausgabe gedruckt werden.

+2

Gibt es einen Grund Bit (1) stattdessen zu verwenden? Obwohl ich merke, dass es standardmäßig 0, wenn ich versuche, es auf> 1 zu setzen. – fncomp

+1

@JoshN: Nicht so sicher, aber ich fand [diese Frage] (http: // stackoverflow.com/questions/488811/tinyint-vs-bit) das kann helfen – BoltClock

+0

Also bedeutet das, wenn ich versuche, es in meiner Anwendung (php) zu wählen, werde ich nur die erste Ziffer bekommen, also wird 127 1 und 97 sein wird 9? –

7

Der Datentyp tinyint verwendet 1 Byte Speicher. 256 mögliche Integer-Werte können mit 1 Byte (-128 bis 127) gespeichert werden. Wenn Sie als tinyint unsigned definieren, werden negative Werte verworfen, so dass Sie speichern können (0 bis 255).

6

Siehe here für wie MySQL das handhabt. Wenn Sie MySQL verwenden> 5.0.5 Sie BIT als Datentyp verwenden können (in älteren Versionen werden BIT als TINYINT(1) interpretiert werden. Doch die (1) -Teil nur die Anzeigebreite ist, nicht die Innenlänge.

+3

Können Sie bitte den Unterschied zwischen * Anzeigebreite * und * interner Länge * erklären. Ich bin neu in diesem Konzept, ich dachte, was in der Datenbank war, was ausgewählt wurde? –

+1

, um dies ebenfalls zu erklären. – MaXi32