• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Boolean --> Tinyint(1)

Endos

Neues Mitglied
Hallo,
ich habe bei meiner Datenbank bei einem Feld den Datentyp "Boolean" angegeben.
Dieser wird automatisch in Tinyint(1) konvertiert (Was ich gelesen habe, soll das ganz normal sein)
Jetzt hab ich das getestet: Ich kann Werte von -128 bis 127 eingeben. Also wird sie intern mit 1Byte gespeichert. Ich will aber nur 1 Bit verwenden. Wie mache ich das?

gruß Endos
 
Werbung:
tinyint(1) ist aber nicht 1 bit, sondern 8, sonst könnte ich nicht 256 zahlen darin speichern
das ist Klammern hat irgendwas mit dem sichtbereich zu tun
 
Werbung:
Es gibt den Datentypen bit(1) in MySQL (keine Ahnung ab welcher Version, hab's hier aber mit 5.1 gemacht und es funktioniert).
 
Hm, interessant.

This data type was added in MySQL 5.0.3 for MyISAM, and extended in 5.0.5 to MEMORY, InnoDB, BDB, and NDBCLUSTER. Before 5.0.3, BIT is a synonym for TINYINT(1).

BOOL, BOOLEAN

These types are synonyms for TINYINT(1).

- MySQL :: MySQL 5.0 Reference Manual :: 10.1.1 Overview of Numeric Types

- Which MySQL Datatype to use for storing boolean values from/to PHP? - Stack Overflow

*schulterzuck*

Ich persönlich tendiere dennoch faktisch zu BOOL/TINYINT(1) zum Speichern von Booleans, weil es mir „offizieller“ vorkommt. Das wäre gewissermaßen die Auslegung false (Werte gleich 0) und nicht false (Werte ungleich 0) statt false und true.

BIT(1) wäre von den zulässigen Werten her aber strenggenommen sicherlich sauberer.

Kann man sicher lange drüber streiten.
 
Werbung:
Wobei das zwar den Inhalt regulieren würde. Verbrauchen tut es aber trotzdem noch einen Byte.

Es ist auch eine ziemlich komplexe Angelegenheit (vor allem in PHP), sich mit diesen Daten rumzuprügeln (klingt seltsam, aber ein besseres Verb als rumprügeln ist mir nicht eingefallen).

Da muss man mit cast(feld as unsigned integer) arbeiten.
Ich bevorzuge nach wie vor tinyint(1) und enum('0', '1') not null.
 
Zurück
Oben