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

MySQLで文字列の末尾から指定した文字数を切り取る方法

MySQLで文字列の末尾から指定文字数を削除する方法

MySQLでは、substring()関数とlength()関数を組み合わせることで、文字列の末尾(最後)から指定した文字数を簡単に切り取ることができます。

基本的な考え方は、「文字列全体の長さから削除したい文字数を引いた値」をsubstring()の第3引数に指定するというものです。以下、具体的な手順をサンプルコードとともに見ていきましょう。

1. サンプルテーブルの作成

まず、テスト用のテーブルを作成します。

mysql> create table DemoTable1329
    -> (
    -> StudentName varchar(40)
    -> );
Query OK, 0 rows affected (0.52 sec)

2. レコードの挿入

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

mysql> insert into DemoTable1329 values('David Miller');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1329 values('Chris Brown');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1329 values('Adam Smith');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable1329 values('John Doe');
Query OK, 1 row affected (0.44 sec)

3. テーブル内容の確認

select文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1329;

実行結果は以下のとおりです。

+--------------+
| StudentName  |
+--------------+
| David Miller |
| Chris Brown  |
| Adam Smith   |
| John Doe     |
+--------------+
4 rows in set (0.00 sec)

4. 末尾から指定文字数を切り取るクエリ

ここが本題です。末尾から5文字を削除するには、次のようなクエリを実行します。

mysql> select substring(StudentName, 1, length(StudentName) - 5) from DemoTable1329;

実行結果:

+----------------------------------------------------+
| substring(StudentName, 1, length(StudentName) - 5) |
+----------------------------------------------------+
| David M                                            |
| Chris                                              |
| Adam                                               |
| Joh                                                |
+----------------------------------------------------+
4 rows in set (0.00 sec)

クエリの仕組み

このクエリがどのように動作するのか、分解して解説します。

  • length(StudentName):各文字列の全長を取得します。例えば「David Miller」なら12文字です。
  • length(StudentName) - 5:全長から5を引くことで、残したい部分の長さを計算します。「David Miller」の場合は7文字になります。
  • substring(StudentName, 1, …):文字列の先頭(位置1)から、計算した長さ分だけ文字を抽出します。

その結果、「David Miller」→「David M」、「Chris Brown」→「Chris」、「Adam Smith」→「Adam」、「John Doe」→「Joh」となり、それぞれの名前の末尾5文字が正しく削除されました。

補足:マルチバイト文字を扱う場合の注意点

日本語などのマルチバイト文字を含むカラムに対しては、length()の代わりに文字数を返すchar_length()を使うのが安全です。length()はバイト数を返すため、UTF-8環境では日本語1文字が3バイトとしてカウントされ、意図しない結果になる可能性があります。

select substring(カラム名, 1, char_length(カラム名) - 削除したい文字数) from テーブル名;

このようにsubstring()length()(またはchar_length())を組み合わせれば、末尾から任意の文字数を柔軟にトリムできます。データクレンジングや表示用の文字列整形など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。

  1. Swiftで文字列の最後の4文字を抽出する方法|substringとsuffixの使い方を解説

    Swiftで文字列の末尾から4文字を抽出したい場合、Stringクラスが標準で提供している機能を活用できます。Swiftはバージョンアップのたびにメソッドの追加・非推奨化・改善が繰り返されてきたため、同じ目的を実現するための手段も複数存在します。本記事では、バージョンごとの代表的な抽出方法をサンプルコード付きでわかりやすく解説します。方法1:substringを使う(Swift 3)Swift 3では、substring(from:)メソッドを使って文字列の一部を切り出すことができました。文字列の終了インデックスからオフセットを指定することで、末尾の文字を取得できます。var Str1 = &

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected