MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでBOOLEAN型として保存された性別の値を文字列(MALE/FEMALE)として抽出する方法

はじめに

MySQLでは、BOOLEAN型のカラムは内部的にTINYINT(1)として扱われ、trueは「1」、falseは「0」として保存されます。そのため、表示の際には数値ではなく「MALE」や「FEMALE」のような文字列に変換して取得したいケースがよくあります。本記事では、IF関数を使ってブール値を文字列として抽出する方法を解説します。

サンプルテーブルの作成

まず、以下のコマンドでテーブルを作成します。

mysql> create table DemoTable815(Gender BOOLEAN);
Query OK, 0 rows affected (0.84 sec)

レコードの挿入

INSERT文を使って、いくつかのレコードを挿入します。

mysql> insert into DemoTable815 values(true);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable815 values(false);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable815 values(false);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable815 values(true);
Query OK, 1 row affected (0.16 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable815;

実行結果は以下のとおりです。ブール値が「1」「0」という数値で格納されていることがわかります。

+--------+
| Gender |
+--------+| 0 |
| 0 |
| 1 |
+--------+
4 rows in set (0.00 sec)

ブール値を文字列として抽出するクエリ

BOOLEAN型として保存された性別の値を文字列として抽出するには、IF関数を使用します。条件がtrueの場合は「MALE」、falseの場合は「FEMALE」を返します。

mysql> select if(Gender=true,'MALE','FEMALE') AS String from DemoTable815;

実行すると、次のような出力が得られます。

+--------+
| String |
+--------+
| MALE |
| FEMALE |
| FEMALE |
| MALE |
+--------+
4 rows in set (0.00 sec)

補足:CASE式を使った方法

IF関数の代わりにCASE式を使っても同じ結果が得られます。条件が複雑になる場合や可読性を重視したい場合は、CASE式の利用をおすすめします。

mysql> SELECT CASE WHEN Gender = true THEN 'MALE' ELSE 'FEMALE' END AS String FROM DemoTable815;

まとめ

MySQLでBOOLEAN型のカラムを文字列として取得するには、IF関数またはCASE式を活用します。どちらもシンプルな構文で実装でき、表示用途に応じて柔軟に対応できるため、実務でも頻繁に使われるテクニックです。

  1. MySQLのテーブルデータはWindowsのどこに保存される?確認方法をわかりやすく解説

    MySQLテーブルデータの保存場所を確認する方法MySQLで作成したテーブルのデータが、実際にWindows上のどの場所に保存されているのかを知りたいケースはよくあります。そんなときは、システム変数「datadir」を確認することで、データディレクトリの場所を簡単に把握できます。まずは、最もシンプルな方法として「@@datadir」を参照する構文を見てみましょう。select @@datadir;また、SHOW VARIABLESコマンドを使って確認することもできます。その場合の構文は以下の通りです。show variables where Variable_name = datadir;実際

  2. MySQLのユーザー定義変数の値を結果テーブルに表示する方法

    MySQLでは、@を使ってユーザー定義変数を宣言し、concat_ws()関数と組み合わせることで、文字列を連結した結果をそのまま結果テーブルに表示できます。まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1508 -> ( -> StudentFirstName varchar(20), -> StudentLastName varchar(20) -> ); Query OK, 0 rows affected (0.55 sec)続いて、insertコマンドを使ってテーブルに