MySQLにて指定したカラムがNULLもしくは空の場合、あらかじめ決めておいた内容で表示する方法
何らかのフォームとMySQLを組み合わせた際に任意入力の項目はそのカラムがNULLもしくは空になる。そのデータを管理画面等で表示する際、NULLもしくは空のデータはPHP側で判定し「未入力」のように表示していたが、この辺りをMySQL側で対応したい。以下に対応方法をメモ。
テーブル構造とデータ内容
mysql> SHOW COLUMNS FROM `test_table`; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(255) | NO | | NULL | | | job | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+----------------+ mysql> SELECT * FROM `test_table`; +----+-----------+-----------+ | id | name | job | +----+-----------+-----------+ | 1 | 田中 | 会社員 | | 2 | 鈴木 | NULL | | 3 | 佐々木 | 自営業 | | 4 | 山田 | NULL | | 5 | 斎藤 | | +----+-----------+-----------+
対応方法
空のカラムは存在しない(NULLだけの判定でいい)場合
空のカラムは気にせず、NULLだけ判定し指定した内容を表示させたい場合は以下のSQL文を実行する。
SELECT `name`, COALESCE(`job`, '未登録') AS job FROM `test_table`;
ただ、空のカラムが存在しているとそのまま空として以下のように表示される。
+-----------+-----------+ | name | job | +-----------+-----------+ | 田中 | 会社員 | | 鈴木 | 未登録 | | 佐々木 | 自営業 | | 山田 | 未登録 | | 斎藤 | | +-----------+-----------+
空もNULLも判定する場合
SELECT `name`, CASE WHEN `job` IS NULL OR `job` = '' THEN '未登録' ELSE `job` END AS `job` FROM `test_table`; +-----------+-----------+ | name | job | +-----------+-----------+ | 田中 | 会社員 | | 鈴木 | 未登録 | | 佐々木 | 自営業 | | 山田 | 未登録 | | 斎藤 | 未登録 | +-----------+-----------+
関連記事
-
-
MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法
MySQLでテーブルのカラム名やカラムの型等、詳細情報を取得する方法をメモ。 & ...
-
-
MySQLでtime型データからint型データの減算を行い、減算後のデータで条件検索する方法
MySQLでtime型データからint型データの減算を行い、減算後のデータを検索 ...
-
-
MySQLでテーブル構造とデータをコピーする方法
MySQLで既にあるテーブルとデータに対して実験を行う必要があった。本番テーブル ...
-
-
MySQLで全角半角を区別せずに検索する方法(collate utf8_unicode_ci)
あるシステムでMySQLの検索時に「WHERE test_column coll ...
-
-
MySQLでデータの集計時に1日の起点を任意の時間に変更する方法
MySQLで1日毎の集計を行う際、例えば2020/01/01のデータは2020/ ...