PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : BOOL in MySQL


Dominic Suter
09.05.2002, 15:10
Wie deklariert Ihr ein Bool Wert in einer Datenbank (MySQL)?
Da ich leider keinen solchen Datentyp in MySQL habe, dachte ich, das beste waere eine Definition mittels: VARCHAR(1). Dann kann ich beim Auslesen mit PHP einfach ein ISSET machen, oder wie wuerded Ihr das loesen?


sami
09.05.2002, 15:17
ich würd ne tinyint nehmen und werte 0 und 1 setzen.

Dominic Suter
09.05.2002, 16:59
wo liegen denn die Vorteile von TINYINT gegenueber der VARCHAR(1)? Benoetigt die VARCHAR nicht weniger Speicherplatz (1Bit)?

sami
09.05.2002, 17:09
varchar ist 1 byte
1 bit wär ja boolean :p
tinyint ist 4 bit

den ansatz mit dem isset is imho echt ned so die lösung, weil sehr unsicher.

Jonas
09.05.2002, 17:09
Erstmal würde ich sagen, TINYINT is kleiner, das is ein INTEGER-Wert im Bereich -127 bis 127 (oder?) bzw unsignet halt bis 255 oder so...

desweiteren, wenn du in varchar "versehentlich" mal was längeres oder so speicherst, wird das einfach vergrößert, TINYINT sollte ne Fehlermeldung geben...
Will heissen du kannst sicherstellen daß nur Zahlen gespeichert sind...

Ausserdem denke ich, daß sich TINYINT dann zB bei Indexes besser macht, d.h. wenn du WHERE deineTinyIntSpalte = 1 machst, und da ein Index drauf is, dürfte das besser klappen als bei Varchar....

Dominic Suter
09.05.2002, 17:20
Danke. Ihr habt mich ueberzeugt. Werde das ganze einmal auf TINYINT aendern.

Jonas
12.05.2002, 12:59
Aso, ganz vergessen, du könntest auch ein ENUM(0,1) [weiß die syntax net genau] nehmen, alllerdings weiß ich net wie gut mysql das bei abfragen verwerten kann...