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でデータがあれば上書き、無ければ挿入する
既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...
-
-
MySQLでCSVから列を指定してインポート
MySQLでCSVからデータをインポートしたかった。またエクセル風にいうA列はi ...
-
-
異なるVPS間でMySQLの接続を行う方法
異なるVPS間でMySQL接続を行った際のメモ。 目次1 対応方法 ...
-
-
MySQLのRANK及びDENSE_RANK関数を用いてランキングを実装する方法
ランキング機能を実装する際、上位〇位までのデータをMySQLから持ってきて順位付 ...
-
-
MySQLでストアドプロシージャ戻り値対応版であるストアドファンクションの設定と利用方法
先日MySQLのストアドプロシージャに関するメモを書いたが、今回はストアドファン ...