【MySQL】列の値の先頭2文字だけを残し、残りの文字を削除する方法
MySQLで列の値から先頭2文字だけを残し、それ以外の文字を削除したい場合は、SUBSTRING() 関数を使用します。SUBSTRING() は文字列の一部を抽出する関数で、開始位置と抽出する文字数を指定することで、任意の範囲の文字列を取り出せます。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable743 (SubjectName varchar(100));
Query OK, 0 rows affected (0.54 sec)
テストデータの挿入
INSERT文を使って、いくつかのレコードを挿入します。
mysql> insert into DemoTable743 values('MySQL');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable743 values('Java');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable743 values('MongoDB');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable743 values('Python');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable743 values('Data Structure');
Query OK, 1 row affected (0.68 sec)
mysql> insert into DemoTable743 values('Algorithm');
Query OK, 1 row affected (0.12 sec)現在のレコードを確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable743;
実行結果は以下の通りです。
+----------------+
| SubjectName |
+----------------+
| MySQL |
| Java |
| MongoDB |
| Python |
| Data Structure |
| Algorithm |
+----------------+
6 rows in set (0.00 sec)
先頭2文字だけを残すUPDATE文
ここからが本題です。列の値の先頭2文字を保持し、残りの文字を削除するには、次のように UPDATE 文と SUBSTRING() を組み合わせます。
mysql> update DemoTable743 set SubjectName=SUBSTRING(SubjectName,1,2);
Query OK, 6 rows affected (0.12 sec)
Rows matched: 6 Changed: 6 Warnings: 0
このクエリでは、「SUBSTRING(SubjectName, 1, 2)」によって SubjectName 列の1文字目から2文字分を抽出し、その結果で元の値を上書きしています。
更新後の確認
もう一度テーブルの内容を確認してみましょう。
mysql> select *from DemoTable743;
実行結果は以下の通りです。
+-------------+
| SubjectName |
+-------------+
| My |
| Ja |
| Mo |
| Py |
| Da |
| Al |
+-------------+
6 rows in set (0.00 sec)
このように、すべての行で先頭2文字だけが残り、それ以降の文字は削除されました。
補足:LEFT() 関数でも同様の処理が可能
なお、先頭から指定した文字数だけを取得する場合は、LEFT() 関数を使うこともできます。「LEFT(SubjectName, 2)」は「SUBSTRING(SubjectName, 1, 2)」と同じ結果を返すため、用途に応じて使い分けるとよいでしょう。
-
MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法
はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036 
-
MySQLで文字列の最初に出現する語のみを置換する方法
REGEXP_REPLACE()で最初の出現箇所だけを置換する文字列内に同じ単語が複数回登場する場合、そのうち最初の1回だけを別の単語に置き換えたいことがあります。MySQLではREGEXP_REPLACE()関数を使うことで、この要件を簡単に実現できます。なお、この関数はMySQL 8.0以降で利用可能です。例として、次のような文字列を考えてみましょう。This is my first MySQL query. This is the first tutorial. I am learning for the first time.この文字列には「first」という単語が3回出現しますが、最