ブール値を格納するために使用するMySQLデータ型はどれですか?質問する

ブール値を格納するために使用するMySQLデータ型はどれですか?質問する

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 に準拠した完全なブール型の処理を実装する予定です。

参考文献:http://dev.mysql.com/doc/refman/5.5/en/数値型の概要.html

おすすめ記事