mysql> CREATE TABLE t (b BIT(8));
Query OK, 0 rows affected (0.08 sec)
mysql> INSERT INTO t SET b = b'11111111';
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO t SET b = b'1010';
Query OK, 1 row affected (0.01 sec)
mysql> select * from t;
+------+
| b |
+------+
| |
|
|
+------+
2 rows in set (0.00 sec)
表示はさすがに化けます。何かちゃんと出力する方法があるのだろうか?
ビットフィールドを扱えるというのは、非常に便利だ。
例えば、ひとつのフィールドごとに、何かの有無を表現するテーブルを作成する場合
自転車の有無
自動車の有無
家の有無
などそれぞれ1で、整数のフィールドを持つのは無駄である。
それぞれ、ビットフィールドにするのでもよいが、
それこそ3ビットのフィールド1つにすることも可能である。
C言語のプログラムではないのでここまでやる必要もないが。
メモリ使用量は減るが、その分、ロジック側で考える部分もでてくるので
利用する場合は、ある程度の指針をもって使いべきである。

0 件のコメント:
コメントを投稿