MySQLでスペース以降の文字列を削除する方法|SUBSTRING_INDEX()の使い方を解説
MySQLでは、SUBSTRING_INDEX() 関数を使うことで、カラム内のスペース(半角空白)より後ろのすべての文字列を簡単に削除できます。この記事では、基本的な構文から実際のサンプルデータを使った実行例まで、わかりやすく解説します。
SUBSTRING_INDEX() の基本構文
スペース以降の文字列を削除するには、以下のような構文を使用します。
SELECT SUBSTRING_INDEX(カラム名, ' ', 1) AS 別名 FROM テーブル名;
第3引数に「1」を指定することで、最初の区切り文字(この場合は半角空白)より前の部分だけが取得され、結果的にスペース以降が削除された状態になります。
サンプルテーブルを作成する
まずは動作を確認するためのテーブルを作成しましょう。以下のクエリを実行します。
mysql> CREATE TABLE deleteAfterSpaceDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(100)
-> );
Query OK, 0 rows affected (0.55 sec)
Id(自動採番の主キー)と StudentName(氏名)という2つのカラムを持つシンプルなテーブルです。
テストデータを挿入する
INSERT文を使って、「姓 名」の形式でスペースを含む氏名データを登録します。
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('John Smith');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('Adam Smith');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('Carol Taylor');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('Chris Brown');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO deleteAfterSpaceDemo(StudentName) VALUES('David Miller');
Query OK, 1 row affected (0.15 sec)
登録済みデータを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> SELECT * FROM deleteAfterSpaceDemo;
実行結果は以下の通りです。
+----+--------------+ | Id | StudentName | +----+--------------+ | 1 | John Smith | | 2 | Adam Smith | | 3 | Carol Taylor | | 4 | Chris Brown | | 5 | David Miller | +----+--------------+ 5 rows in set (0.00 sec)
スペース以降を削除して抽出する
それでは、SUBSTRING_INDEX() を使ってスペース以降の文字列を削除した結果を取得してみます。
mysql> SELECT SUBSTRING_INDEX(StudentName, ' ', 1) AS deleteAllAfterSpace FROM deleteAfterSpaceDemo;
実行結果:
+---------------------+ | deleteAllAfterSpace | +---------------------+ | John | | Adam | | Carol | | Chris | | David | +---------------------+ 5 rows in set (0.04 sec)
このように、各氏名から名前部分(スペース以降)が取り除かれ、姓だけが抽出されていることが確認できます。
補足:実際にデータを更新したい場合
上記の例はあくまで表示時に加工しているだけで、元のテーブルのデータは変更されていません。テーブル内のデータそのものを書き換えたい場合は、UPDATE文と組み合わせて次のように実行します。
mysql> UPDATE deleteAfterSpaceDemo
-> SET StudentName = SUBSTRING_INDEX(StudentName, ' ', 1);
また、逆に「スペース以降の文字列だけ」を取得したい場合は、第3引数に -1 を指定します。
SELECT SUBSTRING_INDEX(StudentName, ' ', -1) FROM deleteAfterSpaceDemo;
この場合、結果は「Smith」「Smith」「Taylor」「Brown」「Miller」となり、名前部分のみが抽出されます。
-
MySQLで区切り文字の後の部分文字列を取得する方法
```html MySQLで区切り文字の後にある部分文字列を取得するには、SUBSTRING()関数とINSTR()関数を組み合わせて使用します。まず、サンプル用のテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Title text -> ); Query OK, 0 rows affected (0.56 sec) 次に、INSERTコマンドを使ってテーブルにレコードを挿入します。 mysql> insert into DemoTable values(John is good in MySQL,Sam i
-
MySQLストアドプロシージャでDELETEクエリを実装する方法
MySQLストアドプロシージャでDELETEクエリを実装する方法MySQLのストアドプロシージャを利用すれば、削除処理をひとつにまとめて再利用しやすくなり、パラメータを通じて動的に値を渡すことも可能です。ここでは、実際にサンプルテーブルを作成し、ストアドプロシージャ内でDELETEクエリを実行するまでの手順を解説します。1. サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1464 -> ( -> Id int, -> Fi