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

MySQLで文字列の末尾5文字を取得する方法|RIGHT()関数の使い方を解説

MySQLで文字列の末尾N文字を取得するには?

MySQLで文字列を操作する際、先頭からn文字を取得したい場合はLEFT()関数を、末尾からn文字を取得したい場合はRIGHT()関数を使用します。

本記事では、RIGHT()関数を使って文字列の最後の5文字を取得する具体的な手順を、サンプルコードとともに解説します。

RIGHT()関数の基本構文

RIGHT()関数の構文は以下の通りです。

SELECT RIGHT(カラム名, 取得する文字数) AS 別名 FROM テーブル名;

第1引数に対象のカラム名、第2引数に末尾から取得したい文字数を指定します。

サンプルテーブルの作成

それでは、実際に動作を確認してみましょう。まずはテスト用のテーブルを作成します。

mysql> create table gettingLast5Characters
    -> (
    -> BookName varchar(100)
    -> );
Query OK, 0 rows affected (0.73 sec)

書籍名を格納する「BookName」カラムを持つシンプルなテーブルです。

テストデータの挿入

続いて、INSERT文でレコードを挿入していきます。

mysql> insert into gettingLast5Characters values('Introduction to C');
Query OK, 1 row affected (0.19 sec)

mysql> insert into gettingLast5Characters values('C in Depth');
Query OK, 1 row affected (0.18 sec)

mysql> insert into gettingLast5Characters values('Introduction to Java');
Query OK, 1 row affected (0.18 sec)

mysql> insert into gettingLast5Characters values('Let us C');
Query OK, 1 row affected (0.51 sec)

登録データの確認

SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認しましょう。

mysql> select *from gettingLast5Characters;

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

+----------------------+
| BookName             |
+----------------------+
| Introduction to C    |
| C in Depth          |
| Introduction to Java |
| Let us C            |
+----------------------+
4 rows in set (0.00 sec)

末尾5文字を取得するクエリの実行

いよいよ、RIGHT()関数を使って各書籍名の末尾5文字を取得します。

mysql> select RIGHT(BookName,5) as Last5Character from gettingLast5Characters;

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

+----------------+
| Last5Character |
+----------------+
| to C          |
| Depth          |
| Java           |
| us C          |
+----------------+
4 rows in set (0.04 sec)

このように、各文字列の末尾5文字が正しく抽出されました。

注意点:空白も1文字としてカウントされる

出力結果を見てみると、「Introduction to C」の末尾5文字が「to C」となっています。これは半角スペースも1文字としてカウントされるためです。「to C」の前にあるスペースが含まれている点に注意してください。

もし空白を除外したい場合は、TRIM()関数と組み合わせることで対応できます。

mysql> select RIGHT(TRIM(BookName),5) as Last5Character from gettingLast5Characters;

補足:日本語などのマルチバイト文字列の扱い

RIGHT()関数は文字数単位で動作するため、utf8mb4などのマルチバイト文字セットを使用している場合でも、日本語の文字列に対して正しく動作します。たとえば「プログラミング入門」に対してRIGHT(カラム名, 3)を指定すると「ミング入門」ではなく「ミング入門」の末尾3文字である「ング入門」…ではなく「ミング入門」の末尾3文字が返されます。

なお、バイト単位で切り出したい場合はRIGHTB()関数を使用してください。日本語のように1文字が複数バイトになる文字列を扱う際は、意図しない文字化けを防ぐためにも、どちらの関数を使うべきかを事前に確認しておくと安心です。

まとめ

  • 文字列の末尾からn文字を取得するにはRIGHT()関数を使用する
  • 先頭から取得したい場合はLEFT()関数を使用する
  • 半角スペースも1文字としてカウントされるため注意が必要
  • 必要に応じてTRIM()関数と組み合わせると便利

RIGHT()関数は拡張子の抽出や、コードの末尾部分の取り出しなど、さまざまな場面で活躍する便利な関数です。ぜひ活用してみてください。

  1. 【MySQL】SUBSTRING_INDEX()で文字列を分割し最後の単語を取得する方法

    MySQLで「Learn With Ease」のような複数単語の文字列を分割し、最後の単語だけを取り出したい場合には、SUBSTRING_INDEX()関数が便利です。この記事では、テーブル作成からデータ挿入、実際に文字列を分割するクエリの実行まで、サンプルコード付きで順番に解説します。 SUBSTRING_INDEX()関数とは SUBSTRING_INDEX()は、指定した区切り文字を基準に文字列を分割し、一部を取得できる関数です。「SUBSTRING_INDEX(対象文字列, 区切り文字, 取得位置)」という形式で使い、第3引数に負の値を指定すると文字列の末尾から数えて取得できます。今

  2. MySQLで末尾の文字列に基づいてレコードをソートする方法

    MySQLで文字列の末尾部分(例:「-D」や「-Smith」など)に基づいてレコードをソートしたい場合は、CASE式とORDER BY句を組み合わせることで実現できます。ここでは、実際のサンプルコードを使いながら、手順をわかりやすく解説します。 1. サンプルテーブルの作成 まずはデモ用のテーブルを作成します。顧客ID(ClientId)を自動採番の主キーとし、顧客名(ClientName)を格納するシンプルな構造です。 mysql> create table DemoTable -> ( -> ClientId int NOT NULL AUTO_INC