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で指定したカラムの中央値を抽出したいというケースがあった。MariaD ...
-
-
MySQLで文字列を置換する方法
MySQLで文字列の置換を行いたかった。以下に方法をメモ。 目次1 ...
-
-
MySQLでtext型カラムに入っている数値をint型としてソートする
MySQLでtext型として指定されているカラムがあり、その中には文字列であった ...
-
-
MySQLでユニークキーをはる
MySQLでseqとcodeみたいなものをあわせて ユニークキーをはりたかった。 ...
-
-
htmlspecialcharsを通してMySQLに格納したものを元に戻して出力
MySQLにHTMLタグを入れたくない場合にhtmlspecialcharsを使 ...