MySQLでURL文字列の最後のインデックス(末尾部分)を取得する方法
URL文字列から最後の部分(最後の区切り文字以降の文字列)を取得したい場合、MySQLのSUBSTRING_INDEX()関数を使用します。この関数は、指定した区切り文字を基準に、文字列を前方または後方から数えて切り出すことができます。
SUBSTRING_INDEX()関数の基本構文
最後のインデックス(末尾部分)を取得するには、区切り文字の位置に「-1」を指定します。基本構文は以下の通りです。
SELECT カラム名1,...N, SUBSTRING_INDEX(対象カラム名,'区切り文字',-1) AS 別名 FROM テーブル名;
動作確認用テーブルの作成
実際に構文を理解するために、まずテーブルを作成しましょう。以下がテーブル作成のクエリです。
mysql> create table LastIndexString
-> (
-> Id int,
-> yourURL text
-> );
Query OK, 0 rows affected (0.89 sec)レコードの挿入
次に、INSERTコマンドを使ってサンプルデータを挿入します。
mysql> insert into LastIndexString values(1,'https://www.example.com/home.html'); Query OK, 1 row affected (0.26 sec) mysql> insert into LastIndexString values(2,'https://exampledemo.example.com/index.jsp'); Query OK, 1 row affected (0.18 sec) mysql> insert into LastIndexString values(3,'https://www.example.com/question/LastString'); Query OK, 1 row affected (0.18 sec)
登録データの確認
SELECT文ですべてのレコードを表示して確認してみましょう。
mysql> select *from LastIndexString;
以下のように、URL文字列が格納されていることがわかります。
+------+---------------------------------------------+ | Id | yourURL | +------+---------------------------------------------+ | 1 | https://www.example.com/home.html | | 2 | https://exampledemo.example.com/index.jsp | | 3 | https://www.example.com/question/LastString | +------+---------------------------------------------+ 3 rows in set (0.00 sec)
URLから最後の文字列を抽出するクエリ
それでは、URL文字列から最後のインデックス部分(スラッシュ「/」より後ろの文字列)を取得するクエリを実行します。区切り文字として「/」を指定し、位置に「-1」を設定することで、末尾の文字列を取り出せます。
mysql> select Id, substring_index(yourURL,'/',-1) as LastStringFromURL from LastIndexString;
実行結果は以下の通りです。各URLのファイル名やパスの最後の部分が正しく抽出されています。
+------+-------------------+ | Id | LastStringFromURL | +------+-------------------+ | 1 | home.html | | 2 | index.jsp | | 3 | LastString | +------+-------------------+ 3 rows in set (0.00 sec)
まとめ
SUBSTRING_INDEX()関数の第3引数に負の値(例:-1)を指定すると、区切り文字を右側から検索し、その右側にある文字列を返します。-2を指定すれば、右から2番目の区切り文字より右側すべてを取得することも可能です。逆に正の値を指定すると左側から数えた位置の左側の文字列が返されるため、用途に応じて使い分けると便利です。URLからファイル名だけを取り出したい場合など、実務でも頻繁に活用できる関数なので、ぜひ覚えておきましょう。
-
MySQLのIFステートメントで文字列を返す方法をわかりやすく解説
MySQLでは、IF()関数を使用することで、条件の評価結果に応じて異なる文字列を返すことができます。本記事では、従業員の給与データを例に、IFステートメントの結果として文字列を返すクエリの書き方を、テーブル作成から順を追って解説します。1. サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, EmployeeSalary int ); Query OK, 0 rows affected (1.68 sec)この
-
MySQLで末尾の文字列に基づいてレコードをソートする方法
MySQLで文字列の末尾部分(例:「-D」や「-Smith」など)に基づいてレコードをソートしたい場合は、CASE式とORDER BY句を組み合わせることで実現できます。ここでは、実際のサンプルコードを使いながら、手順をわかりやすく解説します。 1. サンプルテーブルの作成 まずはデモ用のテーブルを作成します。顧客ID(ClientId)を自動採番の主キーとし、顧客名(ClientName)を格納するシンプルな構造です。 mysql> create table DemoTable -> ( -> ClientId int NOT NULL AUTO_INC