MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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で結合します。このテクニックを覚えておくと、データクリーニングや不備データのチェックに役立ちます。

  1. MySQLで文字列の先頭15文字だけを表示するクエリの書き方

    MySQLで文字列の先頭(左側)から指定した文字数だけを取り出すには、LEFT()関数を使用します。第1引数に対象の文字列、第2引数に取得したい文字数を指定するだけで、手軽に部分文字列を抽出できます。 この記事では、テーブルに登録されたタイトルの先頭15文字だけを表示する方法を、実際のSQLと実行結果付きで順を追って解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable     -> (    &nbs

  2. 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