MySQLでTRUE/FALSEのレコードを0/1として表示する方法
MySQLでTRUE/FALSEのレコードを0/1として表示する方法
MySQLでは、カラムのデータ型をBOOLEANとして定義することで、TRUE/FALSEの値が自動的に0と1として表示されます。BOOLEAN型は内部的にはTINYINT(1)のエイリアスであり、TRUEは1、FALSEは0として扱われます。以下、具体的な手順を解説します。
1. テーブルの作成
まず、BOOLEAN型のカラムを含むテーブルを作成しましょう。
mysql> create table DemoTable2035 -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(20), -> isMarried boolean, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.72 sec)
2. レコードの挿入
次に、INSERTコマンドを使用してテーブルにレコードを挿入します。値にはtrueまたはfalseをそのまま指定できます。
mysql> insert into DemoTable2035(Name,isMarried) values('Chris',true);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable2035(Name,isMarried) values('David',false);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable2035(Name,isMarried) values('Bob',true);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable2035(Name,isMarried) values('Mike',false);
Query OK, 1 row affected (0.12 sec)3. レコードの確認
SELECT文を使用して、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTable2035;
上記のクエリを実行すると、以下のような出力が得られます。
+----+-------+-----------+ | Id | Name | isMarried | +----+-------+-----------+ | 1 | Chris | 1 | | 2 | David | 0 | | 3 | Bob | 1 | | 4 | Mike | 0 | +----+-------+-----------+ 4 rows in set (0.00 sec)
このように、挿入時にはtrue/falseを指定しても、取得結果では1/0として表示されます。これはMySQLのBOOLEAN型がTINYINT(1)の別名であり、TRUEとFALSEがそれぞれ数値の1と0のエイリアスとして定義されているためです。アプリケーション側で真偽値として扱いたい場合は、取得後に1/0をtrue/falseに変換するか、CASE式を利用して表示を制御するとよいでしょう。
-
MySQLのストアドプロシージャでテーブルのレコードを表示する方法
MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT
-
MySQLのGROUP BY句で日付をグループ化してレコードを表示する方法
MySQLで日付をグループ化する基本 MySQLで日付データをグループ化してレコードを表示するには、GROUP BY句を使用します。この記事では、顧客ごとに出荷日の最小値と最大値を取得する例を通じて、GROUP BY句の使い方を詳しく解説します。 1. サンプルテーブルの作成 まず、顧客名と出荷日を格納するテーブルを作成します。 mysql> create table DemoTable2002 ( CustomerName varchar(20), CustomerShippingDate datetime ); Query OK, 0 rows affected (