MySQL には「ブール」データ型がないようですが、MySQL で真偽情報を格納するためにどのデータ型を「乱用」しているのでしょうか?
特に、PHP スクリプトの書き込みと読み取りのコンテキストではそうです。
これまで私は、いくつかのアプローチを試したり見たりしてきました。
- tinyint、varcharフィールド(値0/1を含む)、
- 文字列 '0'/'1' または 'true'/'false' を含む varchar フィールド
- そして最後に、2 つのオプション「true」/「false」を含む列挙フィールドです。
上記のどれも最適ではないようです。PHP の自動型変換によりブール値が簡単に得られるため、私は tinyint 0/1 バリアントを好む傾向があります。
では、どのデータ型を使用しますか? 私が見落としているブール値用に設計された型はありますか? ある型を使用することで、何か利点や欠点があると思いますか?
ベストアンサー1
MySQL 5.0.3 以降では、 を使用できますBIT
。マニュアルには次のように書かれています:
MySQL 5.0.3 以降では、ビット フィールド値を格納するために BIT データ型が使用されます。BIT(M) 型を使用すると、M ビット値の格納が可能になります。M の範囲は 1 から 64 です。
それ以外の場合は、MySQLのマニュアルによると、BOOL
またはを使用できますBOOLEAN
。これらは現時点ではの別名です。ちっちゃい(1):
Bool、Boolean: これらの型は、小さな(1)ゼロの値は偽とみなされる。ゼロ以外の値は真とみなされる。
MySQL では次のようにも述べられています:
将来の MySQL リリースでは、標準 SQL に準拠した完全なブール型の処理を実装する予定です。