環境
MySQL 8.0.29
以下のように新しいテーブルを作成し、他のテーブルからデータを移行しました。
sql
1CREATE TABLE new_events ( 2 id: BIGINT AUTO_INCREMENT, 3 is_published: tinyint(1) NOT NULL DEFAULT 0 4) 5; 6 7INSERT INTO 8 new_events ( 9 id, 10 is_published 11 ) 12SELECT 13 e.id, 14 IF (e.published = 1, 1, 0) 15FROM 16 old_events e 17;
上のようにした場合、以下のようにすると抽出されますが、
WHERE `events`.`is_published` = 1
以下のようにするとされません。
WHERE `events`.`is_published` = true
また、作成時に以下のように、数値ではなく、boolean値を指定すると、boolean値で抽出がされます。ただデータをみると、boolean値ではなく、0または1が入っているのです。
sql
1INSERT INTO 2 new_events ( 3 id, 4 is_published 5 ) 6SELECT 7 e.id, 8 IF (e.is_published = 1, true, false) 9FROM 10 old_events e
あたり前とは思うのですが、どこが違うのでしょうか。
またその場合、default値も0ではなく、falseにするべきでしょうか。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/12 05:01