MySQLでフィールド(カラム)の末尾3文字を削除する方法
MySQLでは、REVERSE()関数とSUBSTR()関数を組み合わせることで、フィールド(カラム)の値から末尾の指定した文字数を簡単に取り除くことができます。この記事では、実際にテーブルを作成し、データを登録して、末尾3文字を削除するクエリの実行手順を解説します。
1. テーブルの作成
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable
-> (
-> StudentId varchar(100)
-> );
Query OK, 0 rows affected (0.58 sec)2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。
mysql> insert into DemoTable values('STU-090');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('STU-123');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('STU-678');
Query OK, 1 row affected (0.29 sec)3. 登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下のとおりです。
+-----------+ | StudentId | +-----------+ | STU-090 | | STU-123 | | STU-678 | +-----------+ 3 rows in set (0.00 sec)
4. フィールドの末尾3文字を削除するクエリ
フィールドの最後の3文字を破棄するには、以下のようなクエリを使用します。
mysql> SELECT REVERSE(SUBSTR(REVERSE(StudentId), 4)) from DemoTable
実行結果は以下のとおりです。
+----------------------------------------+ | REVERSE(SUBSTR(REVERSE(StudentId), 4)) | +----------------------------------------+ | STU- | | STU- | | STU- | +----------------------------------------+ 3 rows in set (0.00 sec)
クエリの仕組み
このクエリがどのように動作するのか、順を追って説明します。
- REVERSE(StudentId):まず文字列を反転させます。例えば「STU-090」は「090-UTS」になります。これにより、元の末尾3文字が先頭に移動します。
- SUBSTR(…, 4):反転した文字列の4文字目以降を取得します。これにより、先頭に移動していた元の末尾3文字が除去されます。
- REVERSE(…):最後にもう一度文字列を反転させ、元の順序に戻します。
その結果、「STU-090」「STU-123」「STU-678」はいずれも「STU-」となり、末尾3文字が正しく削除されていることが確認できます。
補足:別の方法
文字列を反転させる方法以外にも、LEFT()関数やSUBSTRING()関数を使って同様の処理を行うことができます。
mysql> SELECT LEFT(StudentId, CHAR_LENGTH(StudentId) - 3) FROM DemoTable;
この方法では、文字列全体の長さから3を引いた分だけ左側から取得するため、直感的に理解しやすいのが特徴です。用途に応じて使い分けるとよいでしょう。
-
MySQLで最後の30行を取得する方法(ORDER BY DESCとLIMITの使い方)
MySQLでテーブルの最後の30行を取得したい場合は、ORDER BY DESC(降順ソート)とLIMIT 30を組み合わせるのが基本です。降順に並べ替えることで、最新(またはIDが大きい)レコードが先頭に来るため、先頭から30件を取り出すことで実質的に「最後の30行」が取得できます。基本構文SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 30;それでは、実際にサンプルテーブルを作成して動作を確認していきましょう。1. テーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable1567
-
MySQLで日付の最後の1秒(23:59:59)を取得する方法
```html MySQLである日付の「その日の最後の1秒」、つまり 23:59:59 を取得したい場合は、INTERVAL 演算子を使うのが簡単です。この記事では、実際にテーブルを作成し、データを挿入したうえで、日付の最後の1秒を取得するクエリを実行するまでの手順を紹介します。 1. テーブルを作成する まず、DATETIME型のカラムを持つテーブルを作成します。 mysql> create table DemoTable -> ( -> JoiningDatetime datetime, -> DueDatetime datetime