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()関数は拡張子の抽出や、コードの末尾部分の取り出しなど、さまざまな場面で活躍する便利な関数です。ぜひ活用してみてください。
-
【MySQL】SUBSTRING_INDEX()で文字列を分割し最後の単語を取得する方法
MySQLで「Learn With Ease」のような複数単語の文字列を分割し、最後の単語だけを取り出したい場合には、SUBSTRING_INDEX()関数が便利です。この記事では、テーブル作成からデータ挿入、実際に文字列を分割するクエリの実行まで、サンプルコード付きで順番に解説します。 SUBSTRING_INDEX()関数とは SUBSTRING_INDEX()は、指定した区切り文字を基準に文字列を分割し、一部を取得できる関数です。「SUBSTRING_INDEX(対象文字列, 区切り文字, 取得位置)」という形式で使い、第3引数に負の値を指定すると文字列の末尾から数えて取得できます。今
-
MySQLで末尾の文字列に基づいてレコードをソートする方法
MySQLで文字列の末尾部分(例:「-D」や「-Smith」など)に基づいてレコードをソートしたい場合は、CASE式とORDER BY句を組み合わせることで実現できます。ここでは、実際のサンプルコードを使いながら、手順をわかりやすく解説します。 1. サンプルテーブルの作成 まずはデモ用のテーブルを作成します。顧客ID(ClientId)を自動採番の主キーとし、顧客名(ClientName)を格納するシンプルな構造です。 mysql> create table DemoTable -> ( -> ClientId int NOT NULL AUTO_INC