# MySQL の BIT 型の利用例 ```sql CREATE TABLE `bit_example` ( `id` INT NOT NULL AUTO_INCREMENT, `bits` BIT(3), -- 選択肢の数より大きくしておく `memo` VARCHAR(10), PRIMARY KEY (`id`) ); ``` ```sql -- 100: バナナ -- 010: みかん -- 001: りんご INSERT INTO `bit_example` (`bits`, `memo`) VALUES (b'000', "選択なし"); INSERT INTO `bit_example` (`bits`, `memo`) VALUES (b'010', "みかん"); INSERT INTO `bit_example` (`bits`, `memo`) VALUES (b'110', "みかんとバナナ"); INSERT INTO `bit_example` (`bits`, `memo`) VALUES (b'001', "りんご"); ``` ```sql SELECT * FROM `bit_example`; ``` | id | bits | memo | | --- | ---- | -------------- | | 1 | 0 | 選択なし | | 2 | 2 | みかん | | 3 | 6 | みかんとバナナ | | 4 | 1 | りんご | ```sql -- みかんを選んだ人 SELECT * FROM `bit_example` WHERE (`bits` & b'010') = b'010'; ``` | id | bits | memo | | --- | ---- | -------------- | | 2 | 2 | みかん | | 3 | 6 | みかんとバナナ | ```sql -- みかんとバナナを同時に選んだ人 SELECT * FROM `bit_example` WHERE (`bits` & b'110') = b'110'; ``` | id | bits | memo | | --- | ---- | -------------- | | 3 | 6 | みかんとバナナ | ```sql -- りんごかみかんを選んだ人 SELECT * FROM `bit_example` WHERE (`bits` & b'010') != 0b0 OR (`bits` & b'001') != 0b0; ``` | id | bits | memo | | --- | ---- | -------------- | | 2 | 2 | みかん | | 3 | 6 | みかんとバナナ | | 4 | 1 | りんご | ```sql -- バナナを選ばなかった人 SELECT * FROM `bit_example` WHERE (`bits` & b'100') = 0b0; ``` | id | bits | memo | | --- | ---- | -------- | | 1 | 0 | 選択なし | | 2 | 2 | みかん | | 4 | 1 | りんご | ```