受講料が最大70%OFF 受講料が最大70%OFF

SQLでは文字列の操作に使う関数で「SUBSTRING」というものがあります。

この関数をマスターすればデータの更新や追加がグッと楽になります。

そこで今回はこのSUBSTRINGとその類似関数である「RIGHT関数」「LEFT関数」について解説してみたいと思います。

文字列の操作は至ってシンプルですので、この記事でしっかりとマスターしてみてください。

SUBSTRING関数とは

SUBSTRING関数とは英語で「文字列」と訳すことが出来ますが、その名の通り文字列操作に使用する関数です。

もう少し具体的に説明すると、指定した一部を切り取り、それを返す関数です。

このSUBSTRING関数はSQL系サーバー(MySQL及びSQL Server)にしかありませんが、これとよく似た類似関数(使い方については厳密には若干異なる)はほぼ全ての環境に用意されていますので、別環境で慣れ親しんだ方もすぐに理解できるはずです。

SUBSTRING関数の使い方

SUBSTRING関数の記述は至ってシンプルです。

SUBSTRING([文字列], [切り取り開始ポインタ], [切り取りたい文字数]);

第一引数には文字列を指定し、第二引数で指定した文字列のどの部分から開始するのかを指定します。

そして第三引数で文字数を指定するだけです。

それでは早速実際にコードで見てみましょう。

SELECT SUBSTRING('sample code', 1, 6);

実行結果

MariaDB [(none)]> SELECT SUBSTRING("sample code", 1, 6);
+--------------------------------+
| SUBSTRING("sample code", 1, 6) |
+--------------------------------+
| sample                         |
+--------------------------------+
1 row in set (0.000 sec)

“sample code”という文字列から単純に文字を抜き出すためのコードですが、実行結果では先頭から6文字分の文字列”sample”がキチンと抜き出されています。

開始地点のゼロ指定と切り取り文字数オーバー

SQLのSUBSTRINGでよく間違ってしまのが、開始地点のゼロ指定です。

プログラムはほとんど例外なく開始番号が「0」からスタートしますが、SQLにおけるSUBSTRINGの開始地点は「1」から始まります。

次のコードを見てみましょう。

SELECT SUBSTRING('sample code', 0, 6);

実行結果

MariaDB [(none)]> SELECT SUBSTRING("sample code", 0, 6);
+--------------------------------+
| SUBSTRING("sample code", 0, 6) |
+--------------------------------+
|                                |
+--------------------------------+
1 row in set (0.000 sec)

今回は切り取り開始ポインタを「0」に指定してみましたが、実行結果では何も切り取られていないことがわかります。

では次に、切り取り文字数を文字列より多くした場合にはどうでしょうか?

こちらもコードで確認してみましょう。

SELECT SUBSTRING('sample code', 1, 100);

実行結果

MariaDB [(none)]> SELECT SUBSTRING("sample code", 1, 100);
+----------------------------------+
| SUBSTRING("sample code", 1, 100) |
+----------------------------------+
| sample code                      |
+----------------------------------+
1 row in set (0.000 sec)

文字列より切り取り文字数が大きい場合には全体をが切り取られますが、オーバーしている部分に関してもエラーにはなりません。

RIGHT関数、LEFT関数

ここまではSUBSTRING関数の基本的な使い方について解説してみましたが、左右どちらかから切り抜きを開始したい場合には「RIGHT関数」「LEFT関数」という類似関数を使用します。

使い方も非常にシンプルで、RIGHT関数では右から何文字、LEFT関数では左から何文字というように指定していきます。

// RIGHT関数
RIGHT([対象文字列], [取得したい文字数]);
// LEFT関数
LEFT([対象文字列], [取得したい文字数]);

それでは実際に使ってみましょう。

SELECT RIGHT('sample code', 4);

実行結果

MariaDB [(none)]> SELECT RIGHT('sample code', 4);
+-------------------------+
| RIGHT('sample code', 4) |
+-------------------------+
| code                    |
+-------------------------+
1 row in set (0.000 sec)

このコードはRIGHT関数を使って、文字列の終わりから4文字を切り抜くだけの単純なコードですが、実行結果でも期待通り”code”のみが切り取られていることが確認できます。

実運用での使い方の例

ここからは、実際にこのSUBSTRING関数やRIGHT関数/LEFT関数をどのように使うかについて、分かりやすく解説していきます。

SELECT句で使う

SELECT句でSUBSTRING関数を使用する場合にはテーブル+カラムを指定します。

MariaDB [sample_db]> SELECT * FROM members;
+----+---------+-----+------------+
| id | name    | age | birth      |
+----+---------+-----+------------+
|  1 | Arex    |  29 | 1990-12-03 |
|  2 | Noah    |  23 | 1996-04-13 |
|  3 | Jon     |  32 | 1988-02-11 |
|  4 | Jackson |  30 | 1990-10-08 |
+----+---------+-----+------------+
4 rows in set (0.000 sec)

MariaDB [sample_db]> SELECT SUBSTRING(birth, 1, 4) FROM members;
+------------------------+
| SUBSTRING(birth, 1, 4) |
+------------------------+
| 1990                   |
| 1996                   |
| 1988                   |
| 1990                   |
+------------------------+
4 rows in set (0.000 sec)

UPDATE句で使う

データベースの更新時にもSUBSTRINGは使用できます。

MariaDB [sample_db]> SELECT * FROM members;
+----+---------+-----+------------+
| id | name    | age | birth      |
+----+---------+-----+------------+
|  1 | Arex    |  29 | 1990-12-03 |
|  2 | Noah    |  23 | 1996-04-13 |
|  3 | Jon     |  32 | 1988-02-11 |
|  4 | Jackson |  30 | 1990-10-08 |
+----+---------+-----+------------+
4 rows in set (0.000 sec)

MariaDB [sample_db]> UPDATE members SET name = SUBSTRING(name, 1, 1);
Query OK, 4 rows affected (0.003 sec)
Rows matched: 4  Changed: 4  Warnings: 0

MariaDB [sample_db]> SELECT * FROM members;
+----+------+-----+------------+
| id | name | age | birth      |
+----+------+-----+------------+
|  1 | A    |  29 | 1990-12-03 |
|  2 | N    |  23 | 1996-04-13 |
|  3 | J    |  32 | 1988-02-11 |
|  4 | J    |  30 | 1990-10-08 |
+----+------+-----+------------+
4 rows in set (0.000 sec)

上のコードではUPDATE句でSUBSTRING関数を使用し、メンバーの名前を頭文字以外全て削除する命令を実行しています。

まとめ

いかがでしたか?

今回はSUBSTRING関数と類似関数である「RIGHT関数」「LEFT関数」についてコードを交えながら解説してみました。

データベースを扱う上でSQL操作は頻繁に行うことになりますので、是非マスターしてみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。