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()関数の負の開始位置指定を覚えておくと、文字列の末尾部分を扱いたい場面で非常に便利です。
-
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
-
【MySQL】名前列の最後のスペースより左側の文字列をすべて抽出する方法
名前データが格納された列から、フルネームのうち「最後のスペースより左側」の部分だけを取り出したい場面はよくあります。例えば、姓名が混在するデータから名(ファーストネーム)部分を抽出するようなケースです。MySQLでは LEFT()、LENGTH()、LOCATE()、REVERSE() の各関数を組み合わせることで、この処理を簡単に実現できます。 1. サンプルテーブルの作成 まず、名前を格納するテーブルを作成します。 mysql> create table DemoTable1939 ( F