SQLで簡単文字列操作|SUBSTRING・LEFT・RIGHT関数を使ってみよう

みなさんこんにちは!フリーランスプログラマーのsatoです。

今回は文字列の一部を切り取る命令。SUBSTRING関数について見ていきましょう。

  • 「SUBSTRING」とは
  • 「SUBSTRING」を使ってみよう!
  • 「RIGHT関数」「LEFT関数」について

前半では基本的な使い方を学び、後半で便利な類似関数について見ていきましょう。この関数をマスターできれば、UPDATE文を投げる時非常に重宝します。ぜひ学んでみてください。

目次

SUBSTRING関数とは

まずSUBSTRING関数とは、一言で言えば文字列の切り取りを行う関数だと言えるでしょう。指定した部分を切り取って、返してくれる関数なのです。便利なのは、なんとなくわかると思いますが…

言葉ではわかりづらいですし、さっそく実例で見ていきましょうか。

[補足]「SUBSTRING関数」がある環境・ない環境

…と、その前に…実はSUBSTRING関数が存在する環境はメジャーなところだとSQLServerとMySQLだけなんです。

しかしご安心を、類似の関数が、各環境にも用意されています。それぞれの環境で、正しい関数を調べて使っていきましょう。例えば以下の環境では、それぞれこういった関数が用意されています。

  • Access → Mid・MidB
  • Oracle → SUBSTR・SUBSTRB
  • PostgreSQL → SUBSTR


※それぞれの詳細は、今回は省略しますが需要が高ければ追記を行いたいと思います。

「SUBSTRING関数」を使ってみよう!

では早速使っていきましょう。

基本的な使い方

SUBSTRING関数の使い方は非常にシンプルです。

SUBSTRING([文字列], [切り取り開始地点], [切り取る文字数]);

  • 第一引数に、文字列
  • 第二引数に、切り取りの開始地点
  • 第三引数に、切り取る文字数

を指定するわけですね。試しに以下の内容で実行してみましょうか。

実行命令:

SELECT SUBSTRING('12345678', 3, 3);

この例はFROMも何も使用していません。ただ単に文字列「12345678」に対してSUBSTRING関数をかけ、それをSELECTで表示しているだけです。

実行結果:

+-----------------------------+
| SUBSTRING('12345678', 3, 3) |
+-----------------------------+
| 345                         |
+-----------------------------+

三文字目の「3」から開始して、3文字切り取り出しています。つまり「345」が表示されるということですね!

実例で見てみよう

ここからは実際に、テーブルから取得した要素の切り出しをしてみましょうか。サンプルには以下のテーブルを使用します。

userテーブル:

+------+--------+
| id   | name   |
+------+--------+
|    1 | 123456 |
+------+--------+

名前の最初の3文字を表示することとしましょうか

実行命令:

SELECT SUBSTRING(name, 1, 3) FROM user;

実行結果:

+-----------------------+
| SUBSTRING(name, 1, 3) |
+-----------------------+
| 123                   |
+-----------------------+

うまくいきましたね!要素からも、ちゃんと切り出したりできることが理解できたと思います。

UPDATEやWHEREの中でも使える!

ここでは、SUBSTRINGがどこで使用できる箇所を見ていきましょう。特にUPDATE文の中で使用できることを知っておくことは、非常に有意義ですよ!

SELECT句の中

実行命令:

SELECT SUBSTRING(name, 1, 3) FROM user;

これは先ほども見ましたね!表示の加工のために使用する場合は、このような使い方をすることになるでしょう。

WHERE句の中

実行命令:

SELECT name FROM user WHERE SUBSTRING(name, 1, 3) = "123";

WHERE句の中で使用することも可能です。末尾で比較する、なんて使い方も出来るでしょう。

UPDATE句の中

UPDATE文で更新する時にも使用可能です。

実行命令:

UPDATE user SET name = SUBSTRING(name, 1, 3);

例えばこうすれば、nameの頭三文字以外を削除することができます。地味に便利なので覚えておきましょう!

「RIGHT関数」「LEFT関数」について

SUBSTRING関数は開始地点を細かく指定していましたが…左右どちらかから開始する場合はもっと簡単に行える関数が存在します。それが「RIGHT関数」「LEFT関数」です。

これらは「右から何文字」「左から何文字」という指定を行うことができる関数です。使い方を見ておきましょう。

RIGHT関数

RIGHT関数は名前の通り、右から切り取りを行う関数です。

RIGHT([対象の文字列], [取得文字数])

SUBSTRING関数との違いは、開始地点を指定する第二引数が存在しないことですね!実際使ってみましょう。

実行命令:

SELECT RIGHT("123456", 3);

実行結果:

+--------------------+
| RIGHT("123456", 3) |
+--------------------+
| 456                |
+--------------------+

指定した通り、右から3文字取得できています!

LEFT関数

LEFT関数は、RIGHT関数の左寄せ版です。

RIGHT関数さえ理解できていれば、簡単ですね!

実行命令:

SELECT LEFT("123456", 3);

実行結果:

+-------------------+
| LEFT("123456", 3) |
+-------------------+
| 123               |
+-------------------+

指定した通り、左から3文字取得できています!

まとめ

今回はSUBSTRING関数・LEFT関数・RIGHT関数について見てきました。SQL内だけで文字列操作が行えるのは非常に便利ですね!ぜひ使いこなして見てください!

またこれらの関数がない環境の方も、類似関数は存在するはずです。

  • Access → Mid・MidB
  • Oracle → SUBSTR・SUBSTRB
  • PostgreSQL → SUBSTR

有名どころはこの辺りでしょうか。環境ごとに、使用可能な関数を調べておきましょう。

この記事を書いた人

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

目次