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

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を引いた分だけ左側から取得するため、直感的に理解しやすいのが特徴です。用途に応じて使い分けるとよいでしょう。

  1. 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

  2. MySQLで日付の最後の1秒(23:59:59)を取得する方法

    ```html MySQLである日付の「その日の最後の1秒」、つまり 23:59:59 を取得したい場合は、INTERVAL 演算子を使うのが簡単です。この記事では、実際にテーブルを作成し、データを挿入したうえで、日付の最後の1秒を取得するクエリを実行するまでの手順を紹介します。 1. テーブルを作成する まず、DATETIME型のカラムを持つテーブルを作成します。 mysql> create table DemoTable -> ( -> JoiningDatetime datetime, -> DueDatetime datetime