MySQLで空文字('')とNULLの両方を一緒に取得・表示するクエリの書き方
MySQLで空文字とNULLを同時に検索するには
MySQLにおいて、NULL値をチェックするには IS NULL を使用します。一方、空文字(空の値)は IS NULL では判定できないため、空の文字列 '' との比較が必要です。ここでは、両方を一度に抽出する方法を例とともに解説します。
1. サンプルテーブルの作成
まず、テーブルを作成します。
mysql> create table DemoTable691(
PlayerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PlayerName varchar(100),
PlayerScore int
);
Query OK, 0 rows affected (0.56 sec)
2. テストデータの挿入
次に、INSERTコマンドを使っていくつかのレコードを挿入します。ここでは「通常の値」「空文字」「NULL」が混在したデータを用意します。
mysql> insert into DemoTable691(PlayerName,PlayerScore) values('Robert',56);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable691(PlayerName,PlayerScore) values('David',89);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable691(PlayerName,PlayerScore) values('',98);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable691(PlayerName,PlayerScore) values(null,71);
Query OK, 1 row affected (0.17 sec)3. 全レコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable691;
実行結果は以下の通りです。3番目のレコードには空文字が、4番目のレコードにはNULLが格納されていることがわかります。
+----------+------------+-------------+
| PlayerId | PlayerName | PlayerScore |
+----------+------------+-------------+
| 1 | Robert | 56 |
| 2 | David | 89 |
| 3 | | 98 |
| 4 | NULL | 71 |
+----------+------------+-------------+
4 rows in set (0.00 sec)
4. 空文字とNULLを一緒に抽出するクエリ
空文字とNULLの両方をまとめて表示するには、OR 演算子を使って2つの条件を組み合わせます。
mysql> select *from DemoTable691 where PlayerName IS NULL OR PlayerName='';
実行結果は以下の通りです。PlayerNameがNULLまたは空文字のレコードのみが取得できています。
+----------+------------+-------------+
| PlayerId | PlayerName | PlayerScore |
+----------+------------+-------------+
| 3 | | 98 |
| 4 | NULL | 71 |
+----------+------------+-------------+
2 rows in set (0.00 sec)
まとめ
MySQLではNULLと空文字は別のものとして扱われるため、両方を抽出したい場合は WHERE カラム名 IS NULL OR カラム名='' のように条件をORで結合します。このテクニックを覚えておくと、データクリーニングや不備データのチェックに役立ちます。
-
MySQLで文字列の先頭15文字だけを表示するクエリの書き方
MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable -> ( &nbs
-
MySQLでNULLを含む列からNULL以外(NOT NULL)の値だけを抽出して表示する方法
MySQLのIS NOT NULLを使ってNULL以外の値のみを表示するMySQLで、NULLとNULL以外のレコードが混在する列からNULL以外の値だけを取得したい場合は、IS NOT NULL演算子を使用します。この記事では、実際にテーブルを作成しながら手順を解説します。1. テーブルの作成まず、日付型の列を持つサンプルテーブルを作成します。mysql> create table DemoTable1 ( DueDate date ); Query OK, 0 ro