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

【MySQL】空白を含まないフィールド値を取得する方法|NOT LIKE演算子の使い方を解説

MySQLで空白を含まないデータを抽出するには?

特定のカラムに空白(スペース)が含まれていないレコードだけを取得したい場合、最も簡単な方法は NOT LIKE 演算子 を使うことです。この記事では、サンプルテーブルを作成し、実際にクエリを実行しながら手順をわかりやすく解説します。

1. サンプルテーブルの作成

まず、学生の氏名を格納するテーブルを作成しましょう。

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFullName varchar(40)
    );
Query OK, 0 rows affected (0.66 sec)

2. レコードの挿入

INSERT 文を使ってデータを登録します。ここでは、あえて「スペースあり」と「スペースなし」の氏名を混ぜて登録している点がポイントです。

mysql> insert into DemoTable(StudentFullName) values('JohnSmith');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFullName) values('John Doe');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(StudentFullName) values('Adam Smith');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFullName) values('CarolTaylor');
Query OK, 1 row affected (0.19 sec)

3. 登録されたデータの確認

SELECT 文ですべてのレコードを表示してみます。

mysql> select * from DemoTable;

実行結果は次のとおりです。「JohnSmith」と「CarolTaylor」にはスペースが含まれていないことがわかります。

+----+-----------------+
| Id | StudentFullName |
+----+-----------------+
| 1  | JohnSmith       |
| 2  | John Doe        |
| 3  | Adam Smith      |
| 4  | CarolTaylor     |
+----+-----------------+
4 rows in set (0.00 sec)

4. 空白を含まないレコードだけを取得するクエリ

ここからが本題です。NOT LIKE '% %' を指定することで、半角スペースを含まない値を持つレコードのみを抽出できます。

mysql> select *from DemoTable where StudentFullName NOT LIKE '% %';

実行結果:

+----+-----------------+
| Id | StudentFullName |
+----+-----------------+
| 1  | JohnSmith       |
| 4  | CarolTaylor     |
+----+-----------------+
2 rows in set (0.18 sec)

LIKE パターンの仕組みを理解しよう

'% %' の中にある % は、任意の文字列(0文字以上)にマッチするワイルドカードです。つまり '% %' は「何らかの文字の間にスペースが含まれている」という条件を表します。これを NOT LIKE で否定することで、スペースを一切含まない値だけが該当するわけです。

応用:タブや連続スペースにも対応したい場合

上記の方法で判定できるのは「半角スペースを含むかどうか」です。もしタブ文字や改行などもまとめてチェックしたい場合は、正規表現を使える REGEXP が便利です。

mysql> SELECT * FROM DemoTable WHERE StudentFullName NOT REGEXP '[[:space:]]';

[[:space:]] はスペース・タブ・改行といった空白文字全般にマッチする正規表現クラスのため、より厳密なデータ検証が可能になります。用途に合わせて使い分けてみてください。

  1. MySQLの1つのクエリで2つのSELECTステートメントを組み合わせ、特定の値を持たないレコードを抽出する方法

    特定のフィールドに特定の値が存在しないレコードを取得したい場合、WHERE句とサブクエリ(副問い合わせ)を組み合わせることで実現できます。本記事では、1つのクエリ内で2つのSELECTステートメントを使用して目的のレコードを抽出する方法を、テーブル作成から実行結果まで具体例とともに解説します。 テーブルの作成 まず、サンプル用のテーブルを作成しましょう。ここでは、UserNameとUserType(ENUM型)の2つのカラムを持つテーブルを定義します。 mysql> create table DemoTable1840 ( UserName varchar(20),

  2. MySQLのNOT NULL制約とは?空にできない列の定義方法とエラーの挙動を解説

    MySQLでは、列にNULL(空の値)を許可したくない場合、テーブル定義時にNOT NULL制約を指定します。NOT NULLが設定された列にNULLを挿入しようとすると、MySQLはエラーを返し、データの登録を拒否します。NOT NULL制約を持つテーブルの作成まず、Id列とLastName列をNOT NULLとして指定したテーブルを作成してみましょう。mysql> create table DemoTable1895 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20) NOT N