MySQLのSELECTステートメントでCASE式を使って値「1」を「Y」に変換する方法
MySQLでは、SELECTステートメントの中でCASE式を使うことで、カラムの値を別の値や文字列に変換して取得できます。本記事では、tinyint型のフラグ値である「1」を「Y」に置き換えて表示する方法を、具体的な手順とともに解説します。
1. サンプルテーブルの作成
まずは動作確認用のテーブルを作成します。以下がCREATE TABLE文の例です。
mysql> create table changeValuefrom1toY
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> isValidAddress tinyint(1),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.76 sec)
このテーブルは、自動採番されるIdカラムと、住所の有効性を示すisValidAddressカラム(0または1の値を持つtinyint型)で構成されています。
2. テストデータの挿入
続いて、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into changeValuefrom1toY(isValidAddress) values(1); Query OK, 1 row affected (0.22 sec) mysql> insert into changeValuefrom1toY(isValidAddress) values(0); Query OK, 1 row affected (0.16 sec) mysql> insert into changeValuefrom1toY(isValidAddress) values(1); Query OK, 1 row affected (0.19 sec) mysql> insert into changeValuefrom1toY(isValidAddress) values(1); Query OK, 1 row affected (0.15 sec) mysql> insert into changeValuefrom1toY(isValidAddress) values(1); Query OK, 1 row affected (0.16 sec) mysql> insert into changeValuefrom1toY(isValidAddress) values(0); Query OK, 1 row affected (0.12 sec) mysql> insert into changeValuefrom1toY(isValidAddress) values(1); Query OK, 1 row affected (0.49 sec)
3. 登録されたデータの確認
SELECT文ですべてのレコードを表示して、挿入したデータを確認しましょう。
mysql> select *from changeValuefrom1toY;
実行すると、以下のような結果が得られます。
+----+----------------+ | Id | isValidAddress | +----+----------------+ | 1 | 1 | | 2 | 0 | | 3 | 1 | | 4 | 1 | | 5 | 1 | | 6 | 0 | | 7 | 1 | +----+----------------+ 7 rows in set (0.00 sec)
4. CASE式で1を「Y」に変換する
ここからがポイントです。CASE式を組み合わせることで、isValidAddressが1の場合は「Y」を返し、それ以外の場合は元の値をそのまま出力することができます。
mysql> select *,case
-> when isValidAddress=1 THEN 'Y'
-> ELSE isValidAddress
-> END AS Answer
-> from changeValuefrom1toY;
実行結果は以下の通りです。Answerカラムを見ると、値が1だった行がすべて「Y」に変換されていることがわかります。
+----+----------------+--------+ | Id | isValidAddress | Answer | +----+----------------+--------+ | 1 | 1 | Y | | 2 | 0 | 0 | | 3 | 1 | Y | | 4 | 1 | Y | | 5 | 1 | Y | | 6 | 0 | 0 | | 7 | 1 | Y | +----+----------------+--------+ 7 rows in set (0.00 sec)
CASE式の仕組み
このクエリでは、when isValidAddress = 1 THEN 'Y'という条件判定を行い、値が1の行に対して文字列「Y」を返しています。条件に当てはまらない行は、ELSE isValidAddressの指定により、元の値(この場合は0)がそのまま表示されます。
もし「0」も「N」に変換したい場合は、WHEN句をもう一つ追加するか、ELSEの部分をELSE 'N'に変更するだけで簡単に対応できます。CASE式を活用すれば、SQL側で柔軟に表示形式をコントロールできるため、アプリケーション側での変換処理を減らすことにも役立ちます。
-
MySQLでSELECT文の中にCASE式を使う方法を解説
MySQLでは、SELECT文の中でCASE WHEN式を使うことで、条件に応じた値を返すことができます。本記事では、具体的なサンプルを使いながら、その基本的な使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、デモ用のテーブルを作成します。mysql> create table DemoTable -> ( -> FirstName varchar(20), -> Score int -> );Query OK, 0 rows affected (0.63 sec)2. テストデータの挿入INSERTコマンドを使って、いくつか
-
MySQLのCASEステートメントで空の値にカスタム名を表示する方法
MySQLで空の値(空文字列)を含むカラムを取得する際、そのまま表示すると見栄えが悪くなることがあります。そんなときに便利なのが CASE WHEN ステートメントです。この記事では、空の値に対して任意のカスタム名を表示する方法を、実際のSQL例とともにわかりやすく解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20) -> ); Query OK, 0 rows affected (0.62 sec)テストデータの挿入次に