【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:]] はスペース・タブ・改行といった空白文字全般にマッチする正規表現クラスのため、より厳密なデータ検証が可能になります。用途に合わせて使い分けてみてください。
-
MySQLの1つのクエリで2つのSELECTステートメントを組み合わせ、特定の値を持たないレコードを抽出する方法
特定のフィールドに特定の値が存在しないレコードを取得したい場合、WHERE句とサブクエリ(副問い合わせ)を組み合わせることで実現できます。本記事では、1つのクエリ内で2つのSELECTステートメントを使用して目的のレコードを抽出する方法を、テーブル作成から実行結果まで具体例とともに解説します。 テーブルの作成 まず、サンプル用のテーブルを作成しましょう。ここでは、UserNameとUserType(ENUM型)の2つのカラムを持つテーブルを定義します。 mysql> create table DemoTable1840 ( UserName varchar(20),
-
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