MySQLでSUBSTRING関数を使う方法|初心者向け

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年10月)

✔このような方へ向けて書かれた記事となります

「mysql substring関数の使い方がわからない」

「mysql substring関数の書き方を学びたい」

「mysql substring関数の利用例を見てみたい」

✔当記事を通じてお伝えすること

  • mysql substring関数の基本知識
  • mysql substring関数の正確な書き方とその応用
  • mysql substring関数の実例

当記事では、mysql substring関数の基本概念から、その詳細なオプション活用法まで、具体的な例を引用しながら詳しく説明しています。

ぜひ最後までお読みいただき、mysql substring関数のマスタリーにお役立てください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

MySQL文字列関数の基本

MySQLには多数の文字列関数が提供されていますが、中でも”substring”関数は特に頻繁に使用されるものです。

  • 基本的な文字列関数の一部を知る
  • “substring”関数とは?

基本的な文字列関数の一部を知る

MySQLでは、以下のような文字列関数が提供されています。

  • LENGTH()
  • CONCAT()
  • UPPER()
  • LOWER()

これらの関数を利用することで、文字列の長さの取得や文字列の結合、大文字・小文字への変換など、sさまざまな操作を簡単におこなえます。

“substring”関数とは?

“substring”関数は、文字列の一部を抽出するための関数です。

この関数により、指定した位置から特定の長さだけ文字列を取得できます。

“substring”関数の使用法

“substring”関数は非常に柔軟性が高く、さまざまな方法で文字列を抽出できます。

  • 文字列を抽出する基本
  • 文字列の中間から最後までを抽出する方法
  • 文字列の後ろから抽出する方法(“Right”使用例)
  • 文字列の前から抽出する方法(“Left”使用例)

文字列を抽出する基本

基本的な使用方法は以下のとおりです。

SUBSTRING(string, start, length);

例えば、文字列”OpenAI”から”pen”を取得する場合は以下のようにします。

mysql> SELECT SUBSTRING('itc.tokyo', 5, 5);
+------------------------------+
| SUBSTRING('itc.tokyo', 5, 5) |
+------------------------------+
| tokyo                        |
+------------------------------+
1 row in set (0.00 sec)

文字列の中間から最後までを抽出する方法

“substring”を使って、指定した位置から文字列の最後までを抽出するには、lengthパラメータを省略します。

SELECT SUBSTRING('itc.tokyo', 3)

このコードは、”c.tokyo”を返します。

文字列の後ろから抽出する方法(“Right”使用例)

文字列の後ろから指定した長さだけ文字列を取得する場合は、RIGHT()関数を使用します。

mysql> SELECT RIGHT('itc.tokyo', 3);
+-----------------------+
| RIGHT('itc.tokyo', 3) |
+-----------------------+
| kyo                   |
+-----------------------+
1 row in set (0.00 sec)

このコードは、”kyo”を返します。

文字列の前から抽出する方法(“Left”使用例)

文字列の前から指定した長さだけ文字列を取得する場合は、LEFT()関数を使用します。

mysql> SELECT LEFT('itc.tokyo', 3);
+----------------------+
| LEFT('itc.tokyo', 3) |
+----------------------+
| itc                  |
+----------------------+
1 row in set (0.00 sec)

このコードは、”itc”を返します。

“substring”関数の応用例

こちらでは実際の業務における応用例をご覧いただきます。

  • メールアドレスのドメインのみを取得
  • 商品コードの特定部分を抽出

メールアドレスのドメインのみを取得

メールアドレスを抽出するためのUserテーブルです。

| id | name      | email                 |
|----|-----------|----------------------|
| 1  | Alice     | alice@example.com   |
| 2  | Bob       | bob@gmail.com       |
| 3  | Charlie   | charlie@yahoo.com   |

抽出するためのSQL文はこちら。

SELECT name, 
       SUBSTRING(email, LOCATE('@', email) + 1) AS domain
FROM users;

結果例です。

| name      | domain       |
|-----------|--------------|
| Alice     | example.com  |
| Bob       | gmail.com    |
| Charlie   | yahoo.com    |

商品コードの特定部分を抽出

商品コードなどを保存しているProductテーブルはこちら。

| id | product_code  |
|----|---------------|
| 1  | ABC-12345-XYZ |
| 2  | ABC-67890-XYZ |

SQL文は以下のとおりです。

SELECT product_code, 
       CONCAT('PROD-', SUBSTRING(product_code, 5, 5)) AS new_code
FROM products;

結果になります。

| product_code  | new_code   |
|---------------|------------|
| ABC-12345-XYZ | PROD-12345 |
| ABC-67890-XYZ | PROD-67890 |

“substring”関数を活用した効率的なデータ操作手法

“substring”関数は単に文字列の一部を取得するだけでなく、ほかのSQL関数やクエリと組み合わせることで、さらに高度なデータ操作が可能です。

こちらでは文字列中に特定の文字が現れる位置を見つけ出すLOCATE()関数と組み合わせる例をご覧いただきます。

LOCATEで見つけた位置から文字列を抽出する方法です。

SELECT SUBSTRING(email, LOCATE('@', email) + 1) AS domain
FROM users;

このSQLクエリでは、usersテーブルのemailカラムから、”@”の後のドメイン名だけを抽出しています。

LOCATE()関数は指定した文字が現れる位置を返すため、その位置から後の文字列を”substring”関数で抽出できるのです。

まとめ

当記事では、MySQLの”substring”関数について学習してきました。

  • “substring”関数の活用により、文字列データの柔軟かつ効率的な操作が可能となりる
  • データ解析やレポート作成、さらにはデータクレンジングなどの作業が大幅に効率化される
  • ほかの文字列関数と組み合わせることでより効率が高くなる

データベース操作のプロフェッショナルを目指すすべての方々に、”substring”関数の習得と活用を強くおすすめします。

タイトルとURLをコピーしました