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

MySQLで列の値から最後の7文字だけを残し、それ以外を削除する方法

MySQLでは、SUBSTR()関数を活用することで、列の値から末尾の指定した文字数だけを残し、それ以外を簡単に削除できます。本記事では、実際のSQL例を通じてその手順をわかりやすく解説します。

テーブルの作成

まず、サンプル用のテーブルを作成します。

mysql> create table DemoTable
(
    Strength text
);
Query OK, 0 rows affected (0.51 sec)

レコードの挿入

insertコマンドを使って、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable values('John is a good programmer');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('Chris is a good player in cricket');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Bob is good in algorithm');
Query OK, 1 row affected (0.42 sec)

挿入したレコードの確認

selectステートメントを実行して、テーブル内のすべてのレコードを表示します。

mysql> select *from DemoTable

以下の出力が得られます。

+-----------------------------------+
| Strength                          |
+-----------------------------------+
| John is a good programmer         |
| Chris is a good player in cricket |
| Bob is good in algorithm          |
+-----------------------------------+
3 rows in set (0.00 sec)

最後の7文字だけを残すUPDATEクエリ

列の値から最後の7文字以外をすべて削除するには、SUBSTR()関数を組み合わせたupdate文を実行します。

mysql> update DemoTable set Strength=substr(Strength,-7,7);
Query OK, 3 rows affected (0.46 sec)
Rows matched: 3 Changed: 3 Warnings: 0

ここでのポイントは、SUBSTR(Strength,-7,7)のように開始位置に負の値「-7」を指定している点です。これにより、文字列の末尾から7文字目を起点として、そこから7文字分が抽出されます。

更新結果の確認

もう一度テーブルのレコードを確認してみましょう。

mysql> select *from DemoTable;

実行すると、以下の出力が得られます。

+----------+
| Strength |
+----------+
| grammer  |
| cricket  |
| gorithm  |
+----------+
3 rows in set (0.00 sec)

このように、各レコードから最後の7文字だけが抽出され、それ以前の文字列はすべて削除されました。SUBSTR()関数の負の開始位置指定を覚えておくと、文字列の末尾部分を扱いたい場面で非常に便利です。

  1. MySQLクエリで姓ごとのレコード数を新しい列として追加する方法

    MySQLでは、COUNT()とGROUP BYを組み合わせたサブクエリを元のテーブルとJOINすることで、各レコードの姓(LastName)が出現する回数を、結果セットに新しい列として表示できます。ここでは、「Miller」という姓が2回登場するデータを例に、具体的な手順を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100), Las

  2. 【MySQL】名前列の最後のスペースより左側の文字列をすべて抽出する方法

    名前データが格納された列から、フルネームのうち「最後のスペースより左側」の部分だけを取り出したい場面はよくあります。例えば、姓名が混在するデータから名(ファーストネーム)部分を抽出するようなケースです。MySQLでは LEFT()、LENGTH()、LOCATE()、REVERSE() の各関数を組み合わせることで、この処理を簡単に実現できます。 1. サンプルテーブルの作成 まず、名前を格納するテーブルを作成します。 mysql> create table DemoTable1939     (     F