MySQLのtinyintのカラムにbool値を入れた場合
2024/02/25
他所のシステムに携わることがあり中身を色々見ているとMySQLでtinyint(1)のカラムがあり、PHP側からbool値で格納しているというケースがあった。
tinyintは数値が入るものと認識していたのでよく分からなかったんだけど、以下テストすると問題なく動くようだった。
テスト内容
//テーブル作成
CREATE TABLE `tinyint_test` (
`flg` tinyint(1) NOT NULL,
`ymd` timestamp NOT NULL
)
//テーブル構造
+-------+------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+-------------------+-----------------------------+
| flg | tinyint(1) | NO | | NULL | |
| ymd | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+------------+------+-----+-------------------+-----------------------------+
//インサートテスト
INSERT INTO tinyint_test
(flg)
VALUES
(true),
(false),
(1),
(0),
('1'),
('0')
//テスト結果
+-----+---------------------+
| flg | ymd |
+-----+---------------------+
| 1 | 2015-12-15 22:57:09 |
| 0 | 2015-12-15 22:57:09 |
| 1 | 2015-12-15 22:57:09 |
| 0 | 2015-12-15 22:57:09 |
| 1 | 2015-12-15 22:57:09 |
| 0 | 2015-12-15 22:57:09 |
+-----+---------------------+
所感
trueは1に、falseは0になるというのは知らなかったので勉強になった。
関連記事
-
-
MySQLでスレッドの実行状況を表示しスレッドの経過時間チェックや特定スレッドを強制終了する方法
データベースサーバが重たく、原因を調査する機会があった。サーバ自体のメモリやCP ...
-
-
MySQLのview(ビュー)で仮想的なテーブルを作成する方法
MySQL関連のサイトを見ているとview(ビュー)が云々という記事を見かけた。 ...
-
-
MySQLにて直近のクエリで発行されたAUTO_INCREMENTの値を取得する方法
やりたかったことは「MySQLで新規登録(INSERT)なら、登録時のAUTO_ ...
-
-
MySQLで歯抜けになっているint型の数値を取得する
MySQLで歯抜けになっているシーケンス番号を 取得したいケースがあった。 ■ソ ...
-
-
MySQLで全角半角を区別せずに検索する方法(collate utf8_unicode_ci)
あるシステムでMySQLの検索時に「WHERE test_column coll ...