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でtime型データからint型データの減算を行い、減算後のデータで条件検索する方法
MySQLでtime型データからint型データの減算を行い、減算後のデータを検索 ...
-
MySQLでランダムにデータを取得しつつページング機能も実装する方法
MySQLからデータを持ってくる際にランダムな表示を行ってほしいと言われた。ただ ...
-
異なるVPS間でMySQLの接続を行う方法
異なるVPS間でMySQL接続を行った際のメモ。 目次1 対応方法 ...
-
MySQLでユーザー作成時にエラーが発生
SSHからrootアカウントでMySQLにログインし、ユーザーを作成しようとする ...
-
さくらインターネットでCronからmysqldumpすると0バイトのファイルが生成される
さくらインターネットのレンタルサーバでmysqldumpした結果をファイルとして ...