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

【MySQL】ENUM('M','F')の値を「男性」または「女性」として表示するクエリ

ENUM型のカラムに格納された「M」「F」という値を、取得時に「男性」「女性」(Male / Female)として表示したい場合は、IF()関数を使うと簡単に実現できます。

まずはサンプルとなるテーブルを作成しましょう。ここでは、UserGenderカラムをENUM('M','F')型として定義します。

1. テーブルの作成

mysql> create table DemoTable
    (
    UserId int,
    UserName varchar(40),
    UserGender ENUM('M','F')
    );
Query OK, 0 rows affected (1.11 sec)

2. レコードの挿入

続いて、INSERTコマンドでレコードを挿入します。

mysql> insert into DemoTable values(1,'John','M');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(2,'Maria','F');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(3,'David','M');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(4,'Emma','F');
Query OK, 1 row affected (0.15 sec)

3. 現在のデータを確認

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

mysql> select *from DemoTable;

実行結果は以下の通りです。UserGenderカラムには「M」「F」がそのまま格納されています。

+--------+----------+------------+
| UserId | UserName | UserGender |
+--------+----------+------------+
| 1      | John     | M          |
| 2      | Maria    | F          |
| 3      | David    | M          |
| 4      | Emma     | F          |
+--------+----------+------------+
4 rows in set (0.00 sec)

4. IF()関数でENUMの値を変換して表示する

以下のクエリを実行すると、ENUM('M', 'F')の値を「Male」または「Female」として取得できます。

mysql> SELECT UserId,UserName,IF(UserGender='F','Female', 'Male') AS `UserGender` from DemoTable;

IF()関数は「IF(条件式, 真の場合の値, 偽の場合の値)」という形式で使います。ここでは第1引数に「UserGender='F'」という条件を指定し、値が「F」なら「Female」、それ以外(「M」)なら「Male」を返すようにしています。AS句で元のカラム名と同じエイリアスを付ければ、出力の見た目も自然になります。

実行結果は以下の通りです。「M」が「Male」、「F」が「Female」に変換されて表示されていることが確認できます。

+--------+----------+------------+
| UserId | UserName | UserGender |
+--------+----------+------------+
| 1      | John     | Male       |
| 2      | Maria    | Female     |
| 3      | David    | Male       |
| 4      | Emma     | Female     |
+--------+----------+------------+
4 rows in set (0.00 sec)

補足:CASE式を使った方法

IF()の代わりにCASE式を使っても同じ結果が得られます。値の種類が増える可能性がある場合や、条件をより明示的に書きたい場合には、CASE式の方が読みやすくなります。

mysql> SELECT UserId,
   ->       UserName,
   ->       CASE UserGender
   ->           WHEN 'F' THEN 'Female'
   ->           WHEN 'M' THEN 'Male'
   ->       END AS `UserGender`
   -> FROM DemoTable;

このように、IF()関数やCASE式を活用すれば、テーブルのデータ自体は変更せずに、表示内容だけを用途に合わせて変換できます。画面表示用に分かりやすいラベルへ置き換えたい場合にぜひ活用してください。

  1. MySQLで下位n件のレコードを取得する方法:ORDER BY DESCとLIMITの使い方

    MySQLでは、ORDER BY句とLIMIT句を組み合わせることで、テーブルから下位n件のレコードを簡単に取得できます。この記事では、実際にサンプルテーブルを作成し、下位n件のレコードを抽出する手順を詳しく解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable724 (Value int); Query OK, 0 rows affected (0.79 sec) 2. レコードの挿入 次に、insertコマンドを使用してテーブルに複数のレコードを挿入します。 mysql> insert

  2. MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法

    MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;