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で直近〇日、〇ヶ月、〇年以内のデータを検索する方法
他社が作成されたSQL文を見ているとDATE_ADDという使ったことの無い関数が ...
-
-
WordPressでデータベース接続確立エラー発生時の対応方法
WordPressで「データベース接続確立エラー」というエラー表示がされた。大抵 ...
-
-
MySQLでカラム内容によって条件分岐させたい場合の対応方法
MySQLでカラムの内容によって条件を分岐させたかった。またPHPで処理するので ...
-
-
MySQLで開始~終了日時の間隔を計算し分に変換して出力する方法
MySQLで「開始日時」「終了日時」のdatetime型カラムがあり、開始から終 ...
-
-
MySQLのtinyintのカラムにbool値を入れた場合
他所のシステムに携わることがあり中身を色々見ているとMySQLでtinyint( ...